﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;
using SiemensOPC;

namespace VswService_V7.Config
{
    //system configuration
    public class ServerConfig
    {
        public ServerConfig()
        {
            Level3EventOn = false;
            PrintClientSetting = new PrintClientSetting();
            TCPServer = new TCPServer();
            OracleServer = new OracleServer();
            OPCServer = new OPCServer();
            NodeConfig = new NodeConfig();            
        }

        //L3 EVENT ENABLE
        [XmlElement("Level3EventOn")]    //child node name during serialization
        public bool Level3EventOn = false;

        //Print Client
        [XmlElement("PrintClientSetting")]    //child node name during serialization
        public PrintClientSetting PrintClientSetting
        {
            get;
            set;
        }


        //TCPServer
        [XmlElement("TCPServer")]    //child node name during serialization
        public TCPServer TCPServer
        {
            get;
            set;
        }

        //DATA BASE config
        [XmlElement("OracleServer")]    //child node name during serialization
        public OracleServer OracleServer
        {
            get;
            set;
        }

        //OPCServer
        [XmlElement("OPCServer")]    //child node name during serialization
        public OPCServer OPCServer
        {
            get;
            set;
        }

        //NodeConfig
        [XmlElement("NodeConfig")]    //child node name during serialization
        public NodeConfig NodeConfig
        {
            get;
            set;
        }
       
    }


    //***********************************config classer

    #region PrintClientSetting configer
    public class PrintClientSetting
    {
        public PrintClientSetting()
        {
            //PrintServerIP = "null";
        }

        //Print Server IP
        [XmlElement("PrintServerIP")]    //child node name during serialization
        public string PrintServerIP
        {
            get;
            set;
        }

        //Print Server port
        [XmlElement("PrintServerPort")]    //child node name during serialization
        public int PrintServerPort
        {
            get;
            set;
        }


        //Template file name
        [XmlElement("TemplateFileName")]    //child node name during serialization
        public string TemplateFileName
        {
            get;
            set;
        }


        //Printer for BC1 BC2
        [XmlElement("PH01")]    //child node name during serialization
        public string PH01
        {
            get;
            set;
        }

        //Printer Name
        [XmlElement("PH02")]    //child node name during serialization
        public string PH02
        {
            get;
            set;
        }

        //Printer Name
        [XmlElement("PH03")]    //child node name during serialization
        public string PH03
        {
            get;
            set;
        }

        //Printer Name
        [XmlElement("PH04")]    //child node name during serialization
        public string PH04
        {
            get;
            set;
        }

        //Printer Name
        [XmlElement("PH05")]    //child node name during serialization
        public string PH05
        {
            get;
            set;
        }


    }

    #endregion


    #region TCPServer configer
    public class TCPServer
    {
        public TCPServer()
        {
            TcpServerIP = "null";
        }

        //TCPServer IP
        [XmlElement("TcpServerIP")]    //child node name during serialization
        public string TcpServerIP
        {
            get;
            set;
        }

        //TCPServer port
        [XmlElement("TcpServerPort")]    //child node name during serialization
        public int TcpServerPort
        {
            get;
            set;
        }
    }

    #endregion

    #region OracleServer configer
    public class OracleServer
    {
        public OracleServer()
        {
            UserId = "null";
            Password = "null";
            DataSource = "null";
            MaxPoolSize = 60;
            MinPoolSize = 15;
        }

        [XmlElement("UserId")]
        public string UserId { get; set; }

        [XmlElement("Password")]
        public string Password { get; set; }

        [XmlElement("DataSource")]
        public string DataSource { get; set; }

        [XmlElement("MaxPoolSize")]
        public int MaxPoolSize { get; set; }

        [XmlElement("MinPoolSize")]
        public int MinPoolSize { get; set; }
    }

    #endregion

    #region OPCServer configer
    public class OPCServer
    {
        public OPCServer()
        {
            OpcDiscoveryDir = "null";
            OpcConnectionDir = "null";
            OpcTimeZone = new DateTime();
        }

        //Opc discovery server
        [XmlElement("OpcDiscoveryDir")]    //child node name during serialization
        public string OpcDiscoveryDir
        {
            get;
            set;
        }

        //Opc conection server
        [XmlElement("OpcConnectionDir")]
        public string OpcConnectionDir
        {
            get;
            set;
        }

        //Opc time zone
        [XmlElement("OpcTimeZone")]
        public DateTime OpcTimeZone
        {
            get;
            set;
        }
    }
    #endregion

    #region NodeConfiger

    //这种方式序列化必将失败
    //由于编译器是不会自动识别构造函数的参数，
    //所以这里就需要一个无参数的构造函数来新建一个类，这样就能保证类型总能成功新建对象
    //.Net要求序列化的类必须有一个无参数的构造函数 
    public class NodeConfig
    {
        public NodeConfig()
        {
            ProcessDataRecordOn = false;

            #region heartBeat
            //heart beat singnal
            HeartBeatCheckAddress = new HeartBeatCheckAddress();

            #endregion

            #region 1+u01 entryPLC strip load unload accParameter

            //entryPLC strip load and ask strip info
            StripLoadAddress = new StripLoadAddress();
            StripLoadAskListAddress = new StripLoadAskListAddress();
            StripLoadRspListAddress = new StripLoadRspListAddress();

            //entryPLC strip unload
            StripUnLoadAddress = new StripUnLoadAddress();
            StripUnLoadAskAddress = new StripUnLoadAskAddress();

            //entry acc parameter
            AccStripInfoAddress = new AccStripInfoAddress();
            AccStripInfoAskAddress = new AccStripInfoAskAddress();
            AccStripInfoRspAddress = new AccStripInfoRspAddress();
            #endregion

            #region 2+u02 formingPLC FGS Parameter; recipeEvent;process data; downtime

            //formingPLC FGS parameter
            StripInfoAddress = new StripInfoAddress();
			StripInfoAskAddress = new StripInfoAskAddress();
			StripInfoRspAddress = new StripInfoRspAddress();

            //formingPLC recipeEvent
            RecipeEventAddress = new RecipeEventAddress();
            RecipeInfoAddress = new RecipeInfoAddress();

            //fromingPLC process data

            MillLineParameteraAddress = new MillLineParameteraAddress();
            MillLineProcessDataAddress_50 = new MillLineProcessDataAddress_50();
            MillLineProcessDataAddress_100 = new MillLineProcessDataAddress_100();
            MillLineProcessDataAddress_150 = new MillLineProcessDataAddress_150();
            MillLineProcessDataAddress_200 = new MillLineProcessDataAddress_200();

            //*********************************************************


            //MillLineProcessDataAddress = new MillLineProcessDataAddress();
            //MillLineDtjAddress = new MillLineDtjAddress();
            //HfwProcessDataAddress = new HfwProcessDataAddress();
            //Lht1ProcessDataAddress = new Lht1ProcessDataAddress();
            //Lht2ProcessDataAddress = new Lht2ProcessDataAddress();
            //Lht3ProcessDataAddress = new Lht3ProcessDataAddress();
            //Lht4ProcessDataAddress = new Lht4ProcessDataAddress();
            //SustProcessDataAddress = new SustProcessDataAddress();
            //SqProcessDataAddress = new SqProcessDataAddress();

            //formingPLC downTime
            DowntimeAddress = new DowntimeAddress();

            #endregion

            #region 5+u01 fcoPLC fcoPipeInfo fcoBladeInfo

            //fcoPLC fcoPipeInfo
            FcoAddress = new FcoAddress();
            FcoPipeInfoAddress = new FcoPipeInfoAddress();

            //fcoPLC fcoBladeInfo
            FCOBladeAddress = new FCOBladeAddress();
            FCOBladeInfoAddress = new FCOBladeInfoAddress();

            #endregion

            #region 7+u01 FNPLC_1 pipeInfo BC1 BC2 SC1 SC2 SC3 MUST  PLS  IS1 IS2

            //FNPLC_1 pipeInfo
            PipeEventAddress1 = new PipeEventAddress1();
            PipeEventDataAddress1 = new PipeEventDataAddress1();
            PipeDataAddress1 = new PipeDataAddress1();

            //FNPLC_1 BC1
            Bc1Address = new Bc1Address();
            Bc1CurrentPipeAddress = new Bc1CurrentPipeAddress();
            Bc1HistoryPipeAddress = new Bc1HistoryPipeAddress();

            //FNPLC_1 BC2
            Bc2Address = new Bc2Address();
            Bc2CurrentPipeAddress = new Bc2CurrentPipeAddress();
            Bc2HistoryPipeAddress = new Bc2HistoryPipeAddress();

            //FNPLC_1 SC1
            Sc1Address = new Sc1Address();
            Sc1CurrentPipeAddress = new Sc1CurrentPipeAddress();
            Sc1HistoryPipeAddress = new Sc1HistoryPipeAddress();

            //FNPLC_1 SC2
            Sc2Address = new Sc2Address();
            Sc2CurrentPipeAddress = new Sc2CurrentPipeAddress();
            Sc2HistoryPipeAddress = new Sc2HistoryPipeAddress();

            //FNPLC_1 SC3
            Sc3Address = new Sc3Address();
            Sc3CurrentPipeAddress = new Sc3CurrentPipeAddress();
            Sc3HistoryPipeAddress = new Sc3HistoryPipeAddress();

            //FNPLC_1 MUST
            MustAddress = new MustAddress();
            MustPipeAddress = new MustPipeAddress();

            //FNPLC_1 PLS
            PlsAddress = new PlsAddress();
            PlsPipeAddress = new PlsPipeAddress();

            //IS_1
            Is1Address = new Is1Address();
            Is1InputPipeAddress = new Is1InputPipeAddress();

            //IS_2
            Is2Address = new Is2Address();
            Is2InputPipeAddress = new Is2InputPipeAddress();
            #endregion

            #region 7+u03 FNPLC_2 pipeInfo BC4 BC5 SC4 SC5 OS1 OS2 VS1 VS2 FLT SMP smpBlad QC IS3

            //IS_3
            Is3Address = new Is3Address();
            Is3InputPipeAddress = new Is3InputPipeAddress();

            //FNPLC_2 pipeInfo
            PipeEventAddress3 = new PipeEventAddress3();
            PipeEventDataAddress3 = new PipeEventDataAddress3();
            PipeDataAddress3 = new PipeDataAddress3();

            //FNPLC_2 BC4
            Bc4Address = new Bc4Address();
            Bc4CurrentPipeAddress = new Bc4CurrentPipeAddress();
            Bc4HistoryPipeAddress = new Bc4HistoryPipeAddress();

            //FNPLC_2 BC5
            Bc5Address = new Bc5Address();
            Bc5CurrentPipeAddress = new Bc5CurrentPipeAddress();
            Bc5HistoryPipeAddress = new Bc5HistoryPipeAddress();


            //FNPLC_2 SC4
            Sc4Address = new Sc4Address();
            Sc4CurrentPipeAddress = new Sc4CurrentPipeAddress();
            Sc4HistoryPipeAddress = new Sc4HistoryPipeAddress();

            //FNPLC_2 SC5
            Sc5Address = new Sc5Address();
            Sc5CurrentPipeAddress = new Sc5CurrentPipeAddress();
            Sc5HistoryPipeAddress = new Sc5HistoryPipeAddress();

            //FNPLC_2 OS1
            OS1Address = new OS1Address();
            OS1CurrentPipeAddress = new OS1CurrentPipeAddress();
            OS1HistoryPipeAddress = new OS1HistoryPipeAddress();

            //FNPLC_2 OS2
            OS2Address = new OS2Address();
            OS2CurrentPipeAddress = new OS2CurrentPipeAddress();
            OS2HistoryPipeAddress = new OS2HistoryPipeAddress();

            //FNPLC_2 VS1
            VS1Address = new VS1Address();
            VS1PipeAddress = new VS1PipeAddress();

            //FNPLC_2 VS2
            VS2Address = new VS2Address();
            VS2PipeAddress = new VS2PipeAddress();

            //FNPLC_1 FLT
            FltAddress = new FltAddress();
            FltResultAddress = new FltResultAddress();

            //FNPLC_2 SMP
            SampleAddress = new SampleAddress();
            SampleResultAddress = new SampleResultAddress();

            //FNPLC_2 smpBlade
            SMPBladeAddress = new SMPBladeAddress();
            SMPBladeInfoAddress = new SMPBladeInfoAddress();

            //FNPLC_2 QC
            QCAddress = new QCAddress();
            QCCurrentPipeAddress = new QCCurrentPipeAddress();

            #endregion

            MillConfig = new MillConfig();
		}

        //Process data ENABLE
        [XmlElement("ProcessDataRecordOn")]    //child node name during serialization
        public bool ProcessDataRecordOn = false;

        [XmlElement("HeartBeatCheckAddress")]
        public HeartBeatCheckAddress HeartBeatCheckAddress
		{
            get;
            set;
        }

        #region 1+u01 entryPLC strip load

        [XmlElement("StripLoadAddress")]
        public StripLoadAddress StripLoadAddress
        {
            get;
            set;
        }

        [XmlElement("StripLoadAskListAddress")]
        public StripLoadAskListAddress StripLoadAskListAddress
        {
            get;
            set;
        }

        [XmlElement("StripLoadRspListAddress")]
        public StripLoadRspListAddress StripLoadRspListAddress
        {
            get;
            set;
        }
        #endregion

        #region 1+u01 entry uncoil
        [XmlElement("StripInUncoilerAddress")]
        public StripInUncoilerAddress StripInUncoilerAddress
        {
            get;
            set;
        }

        #endregion

        #region 1+u01 entryPLC strip unload

        [XmlElement("StripUnLoadAddress")]
        public StripUnLoadAddress StripUnLoadAddress
        {
            get;
            set;
        }

        [XmlElement("StripUnLoadAskAddress")]
        public StripUnLoadAskAddress StripUnLoadAskAddress
        {
            get;
            set;
        }

        #endregion

        #region 1+u01 entryPLC acc parameter

        [XmlElement("AccStripInfoAddress")]
        public AccStripInfoAddress AccStripInfoAddress
        {
            get;
            set;
        }

        [XmlElement("AccStripInfoAskAddress")]
        public AccStripInfoAskAddress AccStripInfoAskAddress
        {
            get;
            set;
        }

        [XmlElement("AccStripInfoRspAddress")]
        public AccStripInfoRspAddress AccStripInfoRspAddress
        {
            get;
            set;
        }


        #endregion

        #region 2+u02 formingPLC FGS Parameter

        [XmlElement("StripInfoAddress")]
        public StripInfoAddress StripInfoAddress
        {
            get;
            set;
        }

        [XmlElement("StripInfoAskAddress")]
        public StripInfoAskAddress StripInfoAskAddress
        {
            get;
            set;
        }

        [XmlElement("StripInfoRspAddress")]
        public StripInfoRspAddress StripInfoRspAddress
        {
            get;
            set;
        }

        #endregion

        #region 2+u02 recipeEvent

        [XmlElement("RecipeEventAddress")]
        public RecipeEventAddress RecipeEventAddress
        {
            get;
            set;
        }

        [XmlElement("RecipeInfoAddress")]
        public RecipeInfoAddress RecipeInfoAddress
        {
            get;
            set;
        }

        #endregion

        #region 2+u02 formingPLC process data

        [XmlElement("MillLineParameteraAddress")]
        public MillLineParameteraAddress MillLineParameteraAddress
        {
            get;
            set;
        }

        [XmlElement("MillLineProcessDataAddress_50")]
        public MillLineProcessDataAddress_50 MillLineProcessDataAddress_50
        {
            get;
            set;
        }

        [XmlElement("MillLineProcessDataAddress_100")]
        public MillLineProcessDataAddress_100 MillLineProcessDataAddress_100
        {
            get;
            set;
        }

        [XmlElement("MillLineProcessDataAddress_150")]
        public MillLineProcessDataAddress_150 MillLineProcessDataAddress_150
        {
            get;
            set;
        }

        [XmlElement("MillLineProcessDataAddress_200")]
        public MillLineProcessDataAddress_200 MillLineProcessDataAddress_200
        {
            get;
            set;
        }


        //************************************************************

        //[XmlElement("MillLineProcessDataAddress")]
        //public MillLineProcessDataAddress MillLineProcessDataAddress
        //{
        //    get;
        //    set;
        //}

        //[XmlElement("MillLineDtjAddress")]
        //public MillLineDtjAddress MillLineDtjAddress
        //{
        //    get;
        //    set;
        //}

        //[XmlElement("HfwProcessDataAddress")]
        //public HfwProcessDataAddress HfwProcessDataAddress
        //{
        //    get;
        //    set;
        //}

        //[XmlElement("Lht1ProcessDataAddress")]
        //public Lht1ProcessDataAddress Lht1ProcessDataAddress
        //{
        //    get;
        //    set;
        //}

        //[XmlElement("Lht2ProcessDataAddress")]
        //public Lht2ProcessDataAddress Lht2ProcessDataAddress
        //{
        //    get;
        //    set;
        //}

        //[XmlElement("Lht3ProcessDataAddress")]
        //public Lht3ProcessDataAddress Lht3ProcessDataAddress
        //{
        //    get;
        //    set;
        //}

        //[XmlElement("Lht4ProcessDataAddress")]
        //public Lht4ProcessDataAddress Lht4ProcessDataAddress
        //{
        //    get;
        //    set;
        //}

        //[XmlElement("SustProcessDataAddress")]
        //public SustProcessDataAddress SustProcessDataAddress
        //{
        //    get;
        //    set;
        //}

        //[XmlElement("SqProcessDataAddress")]
        //public SqProcessDataAddress SqProcessDataAddress
        //{
        //    get;
        //    set;
        //}

        #endregion

        #region 2+u02 formingPLC downtime

        [XmlElement("DowntimeAddress")]
        public DowntimeAddress DowntimeAddress
        {
            get;
            set;
        }

        #endregion

        #region 5+u01 fcoPLC fcoPipeInfo

        [XmlElement("FcoAddress")]
        public FcoAddress FcoAddress
        {
            get;
            set;
        }

        [XmlElement("FcoPipeInfoAddress")]
        public FcoPipeInfoAddress FcoPipeInfoAddress
        {
            get;
            set;
        }

        #endregion

        #region 5+u01 fcoPLC fcoBladeInfo

        [XmlElement("FCOBladeAddress")]
        public FCOBladeAddress FCOBladeAddress
        {
            get;
            set;
        }

        [XmlElement("FCOBladeInfoAddress")]
        public FCOBladeInfoAddress FCOBladeInfoAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u01 FNPLC_1 pipeInfo

        [XmlElement("PipeEventAddress1")]
        public PipeEventAddress1 PipeEventAddress1
        {
            get;
            set;
        }

        [XmlElement("PipeEventDataAddress1")]
        public PipeEventDataAddress1 PipeEventDataAddress1
        {
            get;
            set;
        }

        [XmlElement("PipeDataAddress1")]
        public PipeDataAddress1 PipeDataAddress1
        {
            get;
            set;
        }


        #endregion

        #region 7+u01 FNPLC_1 BC1

        [XmlElement("Bc1Address")]
        public Bc1Address Bc1Address
        {
            get;
            set;
        }

        [XmlElement("Bc1CurrentPipeAddress")]
        public Bc1CurrentPipeAddress Bc1CurrentPipeAddress
        {
            get;
            set;
        }

        [XmlElement("Bc1HistoryPipeAddress")]
        public Bc1HistoryPipeAddress Bc1HistoryPipeAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u01 FNPLC_1 BC2

        [XmlElement("Bc2Address")]
        public Bc2Address Bc2Address
        {
            get;
            set;
        }

        [XmlElement("Bc2CurrentPipeAddress")]
        public Bc2CurrentPipeAddress Bc2CurrentPipeAddress
        {
            get;
            set;
        }

        [XmlElement("Bc2HistoryPipeAddress")]
        public Bc2HistoryPipeAddress Bc2HistoryPipeAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u01 FNPLC_1 SC1

        [XmlElement("Sc1Address")]
        public Sc1Address Sc1Address
        {
            get;
            set;
        }

        [XmlElement("Sc1CurrentPipeAddress")]
        public Sc1CurrentPipeAddress Sc1CurrentPipeAddress
        {
            get;
            set;
        }

        [XmlElement("Sc1HistoryPipeAddress")]
        public Sc1HistoryPipeAddress Sc1HistoryPipeAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u01 FNPLC_1 SC2

        [XmlElement("Sc2Address")]
        public Sc2Address Sc2Address
        {
            get;
            set;
        }

        [XmlElement("Sc2CurrentPipeAddress")]
        public Sc2CurrentPipeAddress Sc2CurrentPipeAddress
        {
            get;
            set;
        }

        [XmlElement("Sc2HistoryPipeAddress")]
        public Sc2HistoryPipeAddress Sc2HistoryPipeAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u01 FNPLC_1 SC3

        [XmlElement("Sc3Address")]
        public Sc3Address Sc3Address
        {
            get;
            set;
        }

        [XmlElement("Sc3CurrentPipeAddress")]
        public Sc3CurrentPipeAddress Sc3CurrentPipeAddress
        {
            get;
            set;
        }

        [XmlElement("Sc3HistoryPipeAddress")]
        public Sc3HistoryPipeAddress Sc3HistoryPipeAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u01 FNPLC_1 MUST

        [XmlElement("MustAddress")]
        public MustAddress MustAddress
        {
            get;
            set;
        }


        [XmlElement("MustPipeAddress")]
        public MustPipeAddress MustPipeAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u01 FNPLC_1 PLS

        [XmlElement("PlsAddress")]
        public PlsAddress PlsAddress
        {
            get;
            set;
        }

        [XmlElement("PlsPipeAddress")]
        public PlsPipeAddress PlsPipeAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u01 IS_1

        [XmlElement("Is1Address")]
        public Is1Address Is1Address
        {
            get;
            set;
        }

        [XmlElement("Is1InputPipeAddress")]
        public Is1InputPipeAddress Is1InputPipeAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u01 IS_2

        [XmlElement("Is2Address")]
        public Is2Address Is2Address
        {
            get;
            set;
        }

        [XmlElement("Is2InputPipeAddress")]
        public Is2InputPipeAddress Is2InputPipeAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u03 IS_3

        [XmlElement("Is3Address")]
        public Is3Address Is3Address
        {
            get;
            set;
        }

        [XmlElement("Is3InputPipeAddress")]
        public Is3InputPipeAddress Is3InputPipeAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u03 FNPLC_2 pipeInfo

        [XmlElement("PipeEventAddress3")]
        public PipeEventAddress3 PipeEventAddress3
        {
            get;
            set;
        }

        [XmlElement("PipeEventDataAddress3")]
        public PipeEventDataAddress3 PipeEventDataAddress3
        {
            get;
            set;
        }

        [XmlElement("PipeDataAddress3")]
        public PipeDataAddress3 PipeDataAddress3
        {
            get;
            set;
        }

        #endregion

        #region 7+u03 FNPLC_2 BC4

        [XmlElement("Bc4Address")]
        public Bc4Address Bc4Address
        {
            get;
            set;
        }

        [XmlElement("Bc4CurrentPipeAddress")]
        public Bc4CurrentPipeAddress Bc4CurrentPipeAddress
        {
            get;
            set;
        }

        [XmlElement("Bc4HistoryPipeAddress")]
        public Bc4HistoryPipeAddress Bc4HistoryPipeAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u03 FNPLC_2 BC5

        [XmlElement("Bc5Address")]
        public Bc5Address Bc5Address
        {
            get;
            set;
        }

        [XmlElement("Bc5CurrentPipeAddress")]
        public Bc5CurrentPipeAddress Bc5CurrentPipeAddress
        {
            get;
            set;
        }

        [XmlElement("Bc5HistoryPipeAddress")]
        public Bc5HistoryPipeAddress Bc5HistoryPipeAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u03 FNPLC_2 SC4

        [XmlElement("Sc4Address")]
        public Sc4Address Sc4Address
        {
            get;
            set;
        }

        [XmlElement("Sc4CurrentPipeAddress")]
        public Sc4CurrentPipeAddress Sc4CurrentPipeAddress
        {
            get;
            set;
        }

        [XmlElement("Sc4HistoryPipeAddress")]
        public Sc4HistoryPipeAddress Sc4HistoryPipeAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u03 FNPLC_2 SC5

        [XmlElement("Sc5Address")]
        public Sc5Address Sc5Address
        {
            get;
            set;
        }

        [XmlElement("Sc5CurrentPipeAddress")]
        public Sc5CurrentPipeAddress Sc5CurrentPipeAddress
        {
            get;
            set;
        }

        [XmlElement("Sc5HistoryPipeAddress")]
        public Sc5HistoryPipeAddress Sc5HistoryPipeAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u03 FNPLC_2 OS1

        [XmlElement("OS1Address")]
        public OS1Address OS1Address
        {
            get;
            set;
        }

        [XmlElement("OS1CurrentPipeAddress")]
        public OS1CurrentPipeAddress OS1CurrentPipeAddress
        {
            get;
            set;
        }

        [XmlElement("OS1HistoryPipeAddress")]
        public OS1HistoryPipeAddress OS1HistoryPipeAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u03 FNPLC_2 OS2

        [XmlElement("OS2Address")]
        public OS2Address OS2Address
        {
            get;
            set;
        }

        [XmlElement("OS2CurrentPipeAddress")]
        public OS2CurrentPipeAddress OS2CurrentPipeAddress
        {
            get;
            set;
        }

        [XmlElement("OS2HistoryPipeAddress")]
        public OS2HistoryPipeAddress OS2HistoryPipeAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u03 FNPLC_2 VS1

        [XmlElement("VS1Address")]
        public VS1Address VS1Address
        {
            get;
            set;
        }

        [XmlElement("VS1PipeAddress")]
        public VS1PipeAddress VS1PipeAddress
        {
            get;
            set;
        }


        #endregion

        #region 7+u03 FNPLC_2 VS2

        [XmlElement("VS2Address")]
        public VS2Address VS2Address
        {
            get;
            set;
        }

        [XmlElement("VS2PipeAddress")]
        public VS2PipeAddress VS2PipeAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u03 FNPLC_2 FLT

        [XmlElement("FltAddress")]
        public FltAddress FltAddress
        {
            get;
            set;
        }

        [XmlElement("FltResultAddress")]
        public FltResultAddress FltResultAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u03 FNPLC_2 SMP

        [XmlElement("SampleAddress")]
        public SampleAddress SampleAddress
        {
            get;
            set;
        }

        [XmlElement("SampleResultAddress")]
        public SampleResultAddress SampleResultAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u03 FNPLC_2 smpBlade

        [XmlElement("SMPBladeAddress")]
        public SMPBladeAddress SMPBladeAddress
        {
            get;
            set;
        }

        [XmlElement("SMPBladeInfoAddress")]
        public SMPBladeInfoAddress SMPBladeInfoAddress
        {
            get;
            set;
        }

        #endregion

        #region 7+u03 FNPLC_2 QC

        [XmlElement("QCAddress")]
        public QCAddress QCAddress
        {
            get;
            set;
        }

        [XmlElement("QCCurrentPipeAddress")]
        public QCCurrentPipeAddress QCCurrentPipeAddress
        {
            get;
            set;
        }

        #endregion


        [XmlElement("MillConfig")]
		public MillConfig MillConfig
		{
			get;
			set;
		}
	}

	#region Node classes

	public class HeartBeatCheckAddress : SubscriptionGroupBase
    {
        public HeartBeatCheckAddress() : base(2000, 1000, "HeartBeatCheckAddress")
        {
			HeartBeatEntry = "null";
			HeartBeatMain = "null";
			HeartBeatSz = "null";
			HeartBeatFn_1 = "null";
			HeartBeatFn_3 = "null";
		}

        [XmlElement("HeartBeatEntry")]
        public string HeartBeatEntry { get; set; }

		[XmlElement("HeartBeatMain")]
		public string HeartBeatMain { get; set; }

		[XmlElement("HeartBeatSz")]
		public string HeartBeatSz { get; set; }

		[XmlElement("HeartBeatFn_1")]
		public string HeartBeatFn_1 { get; set; }

		[XmlElement("HeartBeatFn_3")]
		public string HeartBeatFn_3 { get; set; }

		public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "HeartBeatNode"
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    //1+U01
	public class StripLoadAddress : SubscriptionGroupBase
	{
		public StripLoadAddress() : base(100, 100, "StripLoadAddress")
		{
			StripLoadAsk = "null";
			StripLoadRsp = "null";
			SendDataAsk = "null";
			SendDataRsp = "null";
		}

		[XmlElement("StripLoadAsk")]
		public string StripLoadAsk { get; set; }

		[XmlElement("StripLoadRsp")]
		public string StripLoadRsp { get; set; }

		[XmlElement("SendDataAsk")]
		public string SendDataAsk { get; set; }

		[XmlElement("SendDataRsp")]
		public string SendDataRsp { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

	public class StripLoadAskListAddress : SubscriptionGroupBase
	{
		public StripLoadAskListAddress() : base(100, 100, "StripLoadAskListAddress")
		{
			StripNode_1 = "null";
			StripNode_2 = "null";
			StripNode_3 = "null";
			StripNode_4 = "null";
			StripNode_5 = "null";
			StripNode_6 = "null";
			StripNode_7 = "null";
			StripNode_8 = "null";
			StripNode_9 = "null";
			StripNode_10 = "null";
			StripNode_11 = "null";
		}

		[XmlElement("StripNode_1")]
		public string StripNode_1 { get; set; }

		[XmlElement("StripNode_2")]
		public string StripNode_2 { get; set; }

		[XmlElement("StripNode_3")]
		public string StripNode_3 { get; set; }

		[XmlElement("StripNode_4")]
		public string StripNode_4 { get; set; }

		[XmlElement("StripNode_5")]
		public string StripNode_5 { get; set; }

		[XmlElement("StripNode_6")]
		public string StripNode_6 { get; set; }

		[XmlElement("StripNode_7")]
		public string StripNode_7 { get; set; }

		[XmlElement("StripNode_8")]
		public string StripNode_8 { get; set; }

		[XmlElement("StripNode_9")]
		public string StripNode_9 { get; set; }

		[XmlElement("StripNode_10")]
		public string StripNode_10 { get; set; }

		[XmlElement("StripNode_11")]
		public string StripNode_11 { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

	public class StripLoadRspListAddress : SubscriptionGroupBase
	{
		public StripLoadRspListAddress() : base(100, 100, "StripLoadRspListAddress")
		{
			Batch_No_1 = "null";
			Task_No_1 = "null";
			Is_Spy_1 = "null";
			Strip_Durability_1 = "null";
			Strip_Thk_1 = "null";
			Strip_Width_1 = "null";
			Burr_Direction_1 = "null";
			Strip_Weight_1 = "null";
			Batch_No_2 = "null";
			Task_No_2 = "null";
			Is_Spy_2 = "null";
			Strip_Durability_2 = "null";
			Strip_Thk_2 = "null";
			Strip_Width_2 = "null";
			Burr_Direction_2 = "null";
			Strip_Weight_2 = "null";
			Batch_No_3 = "null";
			Task_No_3 = "null";
			Is_Spy_3 = "null";
			Strip_Durability_3 = "null";
			Strip_Thk_3 = "null";
			Strip_Width_3 = "null";
			Burr_Direction_3 = "null";
			Strip_Weight_3 = "null";
			Batch_No_4 = "null";
			Task_No_4 = "null";
			Is_Spy_4 = "null";
			Strip_Durability_4 = "null";
			Strip_Thk_4 = "null";
			Strip_Width_4 = "null";
			Burr_Direction_4 = "null";
			Strip_Weight_4 = "null";
			Batch_No_5 = "null";
			Task_No_5 = "null";
			Is_Spy_5 = "null";
			Strip_Durability_5 = "null";
			Strip_Thk_5 = "null";
			Strip_Width_5 = "null";
			Burr_Direction_5 = "null";
			Strip_Weight_5 = "null";
			Batch_No_6 = "null";
			Task_No_6 = "null";
			Is_Spy_6 = "null";
			Strip_Durability_6 = "null";
			Strip_Thk_6 = "null";
			Strip_Width_6 = "null";
			Burr_Direction_6 = "null";
			Strip_Weight_6 = "null";
			Batch_No_7 = "null";
			Task_No_7 = "null";
			Is_Spy_7 = "null";
			Strip_Durability_7 = "null";
			Strip_Thk_7 = "null";
			Strip_Width_7 = "null";
			Burr_Direction_7 = "null";
			Strip_Weight_7 = "null";
			Batch_No_8 = "null";
			Task_No_8 = "null";
			Is_Spy_8 = "null";
			Strip_Durability_8 = "null";
			Strip_Thk_8 = "null";
			Strip_Width_8 = "null";
			Burr_Direction_8 = "null";
			Strip_Weight_8 = "null";
			Batch_No_9 = "null";
			Task_No_9 = "null";
			Is_Spy_9 = "null";
			Strip_Durability_9 = "null";
			Strip_Thk_9 = "null";
			Strip_Width_9 = "null";
			Burr_Direction_9 = "null";
			Strip_Weight_9 = "null";
			Batch_No_10 = "null";
			Task_No_10 = "null";
			Is_Spy_10 = "null";
			Strip_Durability_10 = "null";
			Strip_Thk_10 = "null";
			Strip_Width_10 = "null";
			Burr_Direction_10 = "null";
			Strip_Weight_10 = "null";
			Batch_No_11 = "null";
			Task_No_11 = "null";
			Is_Spy_11 = "null";
			Strip_Durability_11 = "null";
			Strip_Thk_11 = "null";
			Strip_Width_11 = "null";
			Burr_Direction_11 = "null";
			Strip_Weight_11 = "null";
		}

		[XmlElement("Batch_No_1")]
		public string Batch_No_1 { get; set; }

		[XmlElement("Task_No_1")]
		public string Task_No_1 { get; set; }

		[XmlElement("Is_Spy_1")]
		public string Is_Spy_1 { get; set; }

		[XmlElement("Strip_Durability_1")]
		public string Strip_Durability_1 { get; set; }

		[XmlElement("Strip_Thk_1")]
		public string Strip_Thk_1 { get; set; }

		[XmlElement("Strip_Width_1")]
		public string Strip_Width_1 { get; set; }

		[XmlElement("Burr_Direction_1")]
		public string Burr_Direction_1 { get; set; }

		[XmlElement("Strip_Weight_1")]
		public string Strip_Weight_1 { get; set; }

		[XmlElement("Batch_No_2")]
		public string Batch_No_2 { get; set; }

		[XmlElement("Task_No_2")]
		public string Task_No_2 { get; set; }

		[XmlElement("Is_Spy_2")]
		public string Is_Spy_2 { get; set; }

		[XmlElement("Strip_Durability_2")]
		public string Strip_Durability_2 { get; set; }

		[XmlElement("Strip_Thk_2")]
		public string Strip_Thk_2 { get; set; }

		[XmlElement("Strip_Width_2")]
		public string Strip_Width_2 { get; set; }

		[XmlElement("Burr_Direction_2")]
		public string Burr_Direction_2 { get; set; }

		[XmlElement("Strip_Weight_2")]
		public string Strip_Weight_2 { get; set; }

		[XmlElement("Batch_No_3")]
		public string Batch_No_3 { get; set; }

		[XmlElement("Task_No_3")]
		public string Task_No_3 { get; set; }

		[XmlElement("Is_Spy_3")]
		public string Is_Spy_3 { get; set; }

		[XmlElement("Strip_Durability_3")]
		public string Strip_Durability_3 { get; set; }

		[XmlElement("Strip_Thk_3")]
		public string Strip_Thk_3 { get; set; }

		[XmlElement("Strip_Width_3")]
		public string Strip_Width_3 { get; set; }

		[XmlElement("Burr_Direction_3")]
		public string Burr_Direction_3 { get; set; }

		[XmlElement("Strip_Weight_3")]
		public string Strip_Weight_3 { get; set; }

		[XmlElement("Batch_No_4")]
		public string Batch_No_4 { get; set; }

		[XmlElement("Task_No_4")]
		public string Task_No_4 { get; set; }

		[XmlElement("Is_Spy_4")]
		public string Is_Spy_4 { get; set; }

		[XmlElement("Strip_Durability_4")]
		public string Strip_Durability_4 { get; set; }

		[XmlElement("Strip_Thk_4")]
		public string Strip_Thk_4 { get; set; }

		[XmlElement("Strip_Width_4")]
		public string Strip_Width_4 { get; set; }

		[XmlElement("Burr_Direction_4")]
		public string Burr_Direction_4 { get; set; }

		[XmlElement("Strip_Weight_4")]
		public string Strip_Weight_4 { get; set; }

		[XmlElement("Batch_No_5")]
		public string Batch_No_5 { get; set; }

		[XmlElement("Task_No_5")]
		public string Task_No_5 { get; set; }

		[XmlElement("Is_Spy_5")]
		public string Is_Spy_5 { get; set; }

		[XmlElement("Strip_Durability_5")]
		public string Strip_Durability_5 { get; set; }

		[XmlElement("Strip_Thk_5")]
		public string Strip_Thk_5 { get; set; }

		[XmlElement("Strip_Width_5")]
		public string Strip_Width_5 { get; set; }

		[XmlElement("Burr_Direction_5")]
		public string Burr_Direction_5 { get; set; }

		[XmlElement("Strip_Weight_5")]
		public string Strip_Weight_5 { get; set; }

		[XmlElement("Batch_No_6")]
		public string Batch_No_6 { get; set; }

		[XmlElement("Task_No_6")]
		public string Task_No_6 { get; set; }

		[XmlElement("Is_Spy_6")]
		public string Is_Spy_6 { get; set; }

		[XmlElement("Strip_Durability_6")]
		public string Strip_Durability_6 { get; set; }

		[XmlElement("Strip_Thk_6")]
		public string Strip_Thk_6 { get; set; }

		[XmlElement("Strip_Width_6")]
		public string Strip_Width_6 { get; set; }

		[XmlElement("Burr_Direction_6")]
		public string Burr_Direction_6 { get; set; }

		[XmlElement("Strip_Weight_6")]
		public string Strip_Weight_6 { get; set; }

		[XmlElement("Batch_No_7")]
		public string Batch_No_7 { get; set; }

		[XmlElement("Task_No_7")]
		public string Task_No_7 { get; set; }

		[XmlElement("Is_Spy_7")]
		public string Is_Spy_7 { get; set; }

		[XmlElement("Strip_Durability_7")]
		public string Strip_Durability_7 { get; set; }

		[XmlElement("Strip_Thk_7")]
		public string Strip_Thk_7 { get; set; }

		[XmlElement("Strip_Width_7")]
		public string Strip_Width_7 { get; set; }

		[XmlElement("Burr_Direction_7")]
		public string Burr_Direction_7 { get; set; }

		[XmlElement("Strip_Weight_7")]
		public string Strip_Weight_7 { get; set; }

		[XmlElement("Batch_No_8")]
		public string Batch_No_8 { get; set; }

		[XmlElement("Task_No_8")]
		public string Task_No_8 { get; set; }

		[XmlElement("Is_Spy_8")]
		public string Is_Spy_8 { get; set; }

		[XmlElement("Strip_Durability_8")]
		public string Strip_Durability_8 { get; set; }

		[XmlElement("Strip_Thk_8")]
		public string Strip_Thk_8 { get; set; }

		[XmlElement("Strip_Width_8")]
		public string Strip_Width_8 { get; set; }

		[XmlElement("Burr_Direction_8")]
		public string Burr_Direction_8 { get; set; }

		[XmlElement("Strip_Weight_8")]
		public string Strip_Weight_8 { get; set; }

		[XmlElement("Batch_No_9")]
		public string Batch_No_9 { get; set; }

		[XmlElement("Task_No_9")]
		public string Task_No_9 { get; set; }

		[XmlElement("Is_Spy_9")]
		public string Is_Spy_9 { get; set; }

		[XmlElement("Strip_Durability_9")]
		public string Strip_Durability_9 { get; set; }

		[XmlElement("Strip_Thk_9")]
		public string Strip_Thk_9 { get; set; }

		[XmlElement("Strip_Width_9")]
		public string Strip_Width_9 { get; set; }

		[XmlElement("Burr_Direction_9")]
		public string Burr_Direction_9 { get; set; }

		[XmlElement("Strip_Weight_9")]
		public string Strip_Weight_9 { get; set; }

		[XmlElement("Batch_No_10")]
		public string Batch_No_10 { get; set; }

		[XmlElement("Task_No_10")]
		public string Task_No_10 { get; set; }

		[XmlElement("Is_Spy_10")]
		public string Is_Spy_10 { get; set; }

		[XmlElement("Strip_Durability_10")]
		public string Strip_Durability_10 { get; set; }

		[XmlElement("Strip_Thk_10")]
		public string Strip_Thk_10 { get; set; }

		[XmlElement("Strip_Width_10")]
		public string Strip_Width_10 { get; set; }

		[XmlElement("Burr_Direction_10")]
		public string Burr_Direction_10 { get; set; }

		[XmlElement("Strip_Weight_10")]
		public string Strip_Weight_10 { get; set; }

		[XmlElement("Batch_No_11")]
		public string Batch_No_11 { get; set; }

		[XmlElement("Task_No_11")]
		public string Task_No_11 { get; set; }

		[XmlElement("Is_Spy_11")]
		public string Is_Spy_11 { get; set; }

		[XmlElement("Strip_Durability_11")]
		public string Strip_Durability_11 { get; set; }

		[XmlElement("Strip_Thk_11")]
		public string Strip_Thk_11 { get; set; }

		[XmlElement("Strip_Width_11")]
		public string Strip_Width_11 { get; set; }

		[XmlElement("Burr_Direction_11")]
		public string Burr_Direction_11 { get; set; }

		[XmlElement("Strip_Weight_11")]
		public string Strip_Weight_11 { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}
		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

    public class StripInUncoilerAddress : SubscriptionGroupBase
    {
        public StripInUncoilerAddress() : base(100, 100, "StripInUncoilerAddress")
        {
            Strip_No = "null";
        }
        [XmlElement("Strip_No")]
        public string Strip_No { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }


    public class StripUnLoadAddress : SubscriptionGroupBase
    {
        public StripUnLoadAddress() : base(100, 100, "StripUnLoadAddress")
        {
            StripUnLoadAsk = "null";
            StripUnLoadRsp = "null";
        }
        [XmlElement("StripUnLoadAsk")]
        public string StripUnLoadAsk { get; set; }

        [XmlElement("StripUnLoadRsp")]
        public string StripUnLoadRsp { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class StripUnLoadAskAddress : SubscriptionGroupBase
    {
        public StripUnLoadAskAddress() : base(100, 100, "StripUnLoadAskAddress")
        {
            Strip_No = "null";
            Result = "null";
        }
        [XmlElement("Strip_No")]
        public string Strip_No { get; set; }

        [XmlElement("Result")]
        public string Result { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class AccStripInfoAddress : SubscriptionGroupBase
    {
        public AccStripInfoAddress() : base(100, 1, "AccStripInfoAddress")
        {
            AccStripsInfoAsk = "null";
            AccStripsInfoRsp = "null";
        }

        [XmlElement("AccStripsInfoAsk")]
        public string AccStripsInfoAsk { get; set; }

        [XmlElement("AccStripsInfoRsp")]
        public string AccStripsInfoRsp { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class AccStripInfoAskAddress : SubscriptionGroupBase
    {
        public AccStripInfoAskAddress() : base(100, 1, "AccStripInfoAskAddress")
        {
            Strip_No = "null";
        }
        [XmlElement("Strip_No")]
        public string Strip_No { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class AccStripInfoRspAddress : SubscriptionGroupBase
    {
        public AccStripInfoRspAddress() : base(100, 1, "AccStripInfoRspAddress")
        {
            Recipe_No = "null";
            Yeild_Strength = "null";
            Acc_Pr_Pressure_1 = "null";
            Acc_Pr_Pressure_2 = "null";
        }
        [XmlElement("Recipe_No")]
        public string Recipe_No { get; set; }

        [XmlElement("Yeild_Strength")]
        public string Yeild_Strength { get; set; }

        [XmlElement("Acc_Pr_Pressure_1")]
        public string Acc_Pr_Pressure_1 { get; set; }

        [XmlElement("Acc_Pr_Pressure_2")]
        public string Acc_Pr_Pressure_2 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    //2+U02
    public class StripInfoAddress : SubscriptionGroupBase
	{
		public StripInfoAddress() : base(100, 100, "StripInfoAddress")
		{			
			StripsInfoAsk = "null";
			StripsInfoRsp = "null";
		}
		[XmlElement("StripsInfoAsk")]
		public string StripsInfoAsk { get; set; }

		[XmlElement("StripsInfoRsp")]
		public string StripsInfoRsp { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

	public class StripInfoAskAddress :SubscriptionGroupBase
	{
		public StripInfoAskAddress():base(100,1, "StripInfoAskAddress")
		{
			Strip_No = "null";
		}
		[XmlElement("Strip_No")]
		public string Strip_No { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

	public class StripInfoRspAddress :SubscriptionGroupBase
	{
		public StripInfoRspAddress():base(1000,1000, "StripInfoRspAddress")
		{
			Batch_No_A = "null";
			Batch_No_B = "null";
			Recipe_No = "null";
			Standard_Code = "null";
			Batch_Sample_No = "null";
			Strip_Sample_No = "null";
			Task_No = "null";
			Is_Spy = "null";
			Strip_Durability = "null";
			Strip_Thk = "null";
			Strip_Width = "null";
			Pipe_Nominal_Lenght = "null";
			Pipe_Max_Length = "null";
			Pipe_Min_Length = "null";
			Pipe_Nominal_Od = "null";
			Pipe_Max_Od = "null";
			Pipe_Min_Od = "null";
			Pipe_Nominal_Thickness = "null";
			Pipe_Min_Thickness = "null";
			Inner_Bead_Isremoving = "null";
			Inner_Bead_Height = "null";
			Inner_Bead_Depth = "null";
			Ovality_Up_Limit = "null";
			Body_Straightness = "null";
			End_Straightness = "null";
			Yeild_Strength = "null";			
			Em_Cutting_Spd = "null";
			Em_Chipload = "null";
			Sa1_Power = "null";
			Sa1_Temp = "null";
			Sa1_Height = "null";
			Sa1_Freq = "null";
			Sa2_Power = "null";
			Sa2_Temp = "null";
			Sa2_Height = "null";
			Sa2_Freq = "null";
			Sa3_Power = "null";
			Sa3_Temp = "null";
			Sa3_Height = "null";
			Sa3_Power = "null";
			Sa4_Temp = "null";
			Sa4_Height = "null";
			Sa4_Freq = "null";
			Sa4_Freq = "null";
			Hfw_LineSpeed = "null";
			Hfw_Power = "null";
			Hfw_Freq = "null";
            HFW_VEE_X = "null";
			Sust_Ctrl_1 = "null";
			Sust_Ctrl_2 = "null";
            Strip_WD_Target = "null";
            HFW_Mode = "null";
            HFW_PreHeatPower = "null";
            HFW_Temperature = "null";
            HFW_SPC_Gain = "null";
            HFW_SPC_Slope = "null";
        }
		[XmlElement("Batch_No_A")]
		public string Batch_No_A { get; set; }

		[XmlElement("Batch_No_B")]
		public string Batch_No_B { get; set; }

		[XmlElement("Recipe_No")]
		public string Recipe_No { get; set; }

		[XmlElement("Standard_Code")]
		public string Standard_Code { get; set; }

		[XmlElement("Batch_Sample_No")]
		public string Batch_Sample_No { get; set; }

		[XmlElement("Strip_Sample_No")]
		public string Strip_Sample_No { get; set; }

		[XmlElement("Task_No")]
		public string Task_No { get; set; }

		[XmlElement("Is_Spy")]
		public string Is_Spy { get; set; }

		[XmlElement("Strip_Durability")]
		public string Strip_Durability { get; set; }

		[XmlElement("Strip_Thk")]
		public string Strip_Thk { get; set; }

		[XmlElement("Strip_Width")]
		public string Strip_Width { get; set; }

		[XmlElement("Pipe_Nominal_Lenght")]
		public string Pipe_Nominal_Lenght { get; set; }

		[XmlElement("Pipe_Max_Length")]
		public string Pipe_Max_Length { get; set; }

		[XmlElement("Pipe_Min_Length")]
		public string Pipe_Min_Length { get; set; }

		[XmlElement("Pipe_Nominal_Od")]
		public string Pipe_Nominal_Od { get; set; }

		[XmlElement("Pipe_Max_Od")]
		public string Pipe_Max_Od { get; set; }

		[XmlElement("Pipe_Min_Od")]
		public string Pipe_Min_Od { get; set; }

		[XmlElement("Pipe_Nominal_Thickness")]
		public string Pipe_Nominal_Thickness { get; set; }

		[XmlElement("Pipe_Min_Thickness")]
		public string Pipe_Min_Thickness { get; set; }

		[XmlElement("Inner_Bead_Isremoving")]
		public string Inner_Bead_Isremoving { get; set; }

		[XmlElement("Inner_Bead_Height")]
		public string Inner_Bead_Height { get; set; }

		[XmlElement("Inner_Bead_Depth")]
		public string Inner_Bead_Depth { get; set; }

		[XmlElement("Ovality_Up_Limit")]
		public string Ovality_Up_Limit { get; set; }

		[XmlElement("Body_Straightness")]
		public string Body_Straightness { get; set; }

		[XmlElement("End_Straightness")]
		public string End_Straightness { get; set; }

		[XmlElement("Yeild_Strength")]
		public string Yeild_Strength { get; set; }

		[XmlElement("Em_Cutting_Spd")]
		public string Em_Cutting_Spd { get; set; }

		[XmlElement("Em_Chipload")]
		public string Em_Chipload { get; set; }

		[XmlElement("Sa1_Power")]
		public string Sa1_Power { get; set; }

		[XmlElement("Sa1_Temp")]
		public string Sa1_Temp { get; set; }

		[XmlElement("Sa1_Height")]
		public string Sa1_Height { get; set; }

		[XmlElement("Sa1_Freq")]
		public string Sa1_Freq { get; set; }

		[XmlElement("Sa2_Power")]
		public string Sa2_Power { get; set; }

		[XmlElement("Sa2_Temp")]
		public string Sa2_Temp { get; set; }

		[XmlElement("Sa2_Height")]
		public string Sa2_Height { get; set; }

		[XmlElement("Sa2_Freq")]
		public string Sa2_Freq { get; set; }

		[XmlElement("Sa3_Power")]
		public string Sa3_Power { get; set; }

		[XmlElement("Sa3_Temp")]
		public string Sa3_Temp { get; set; }

		[XmlElement("Sa3_Height")]
		public string Sa3_Height { get; set; }

		[XmlElement("Sa3_Freq")]
		public string Sa3_Freq { get; set; }

		[XmlElement("Sa4_Power")]
		public string Sa4_Power { get; set; }

		[XmlElement("Sa4_Temp")]
		public string Sa4_Temp { get; set; }

		[XmlElement("Sa4_Height")]
		public string Sa4_Height { get; set; }

		[XmlElement("Sa4_Freq")]
		public string Sa4_Freq { get; set; }

		[XmlElement("Hfw_LineSpeed")]
		public string Hfw_LineSpeed { get; set; }

		[XmlElement("Hfw_Power")]
		public string Hfw_Power { get; set; }

		[XmlElement("Hfw_Freq")]
		public string Hfw_Freq { get; set; }
		
        [XmlElement("HFW_VEE_X")]
		public string HFW_VEE_X { get; set; }

		[XmlElement("Sust_Ctrl_1")]
		public string Sust_Ctrl_1 { get; set; }

		[XmlElement("Sust_Ctrl_2")]
		public string Sust_Ctrl_2 { get; set; }

        [XmlElement("Strip_WD_Target")]
        public string Strip_WD_Target { get; set; }

        [XmlElement("HFW_Mode")]
        public string HFW_Mode { get; set; }

        [XmlElement("HFW_PreHeatPower")]
        public string HFW_PreHeatPower { get; set; }

        [XmlElement("HFW_Temperature")]
        public string HFW_Temperature { get; set; }

        [XmlElement("HFW_SPC_Gain")]
        public string HFW_SPC_Gain { get; set; }

        [XmlElement("HFW_SPC_Slope")]
        public string HFW_SPC_Slope { get; set; }

        public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

    public class RecipeEventAddress : SubscriptionGroupBase
    {
        public RecipeEventAddress() : base(100, 100, "RecipeEventAddress")
        {
            RecipeEventTrigger = "null";
        }

        [XmlElement("RecipeEventTrigger")]
        public string RecipeEventTrigger { get; set; }


        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class RecipeInfoAddress : SubscriptionGroupBase
    {
        public RecipeInfoAddress() : base(100, 100, "RecipeInfoAddress")
        {
            Recipe_ID = "null";
            ACC_PR_T_Pressure = "null";
            ACC_PR_B_Pressure = "null";
            Em_Cutting_Spd_1 = "null";
            Em_Chipload_1 = "null";
            Em_Cutting_Spd_2 = "null";
            Em_Chipload_2 = "null";
            Sa1_Power = "null";
            Sa1_Temp = "null";
            Sa1_Height = "null";
            Sa1_Freq = "null";
            Sa2_Power = "null";
            Sa2_Temp = "null";
            Sa2_Height = "null";
            Sa2_Freq = "null";
            Sa3_Power = "null";
            Sa3_Temp = "null";
            Sa3_Height = "null";
            Sa3_Power = "null";
            Sa4_Temp = "null";
            Sa4_Height = "null";
            Sa4_Freq = "null";
            Sa4_Freq = "null";
            Hfw_LineSpeed = "null";
            Hfw_Power = "null";
            Hfw_Freq = "null";
            HFW_VEE_X = "null";
            HFW_Mode = "null";
            HFW_PreHeatPower = "null";
            HFW_Temperature = "null";
            HFW_SPC_Gain = "null";
            HFW_SPC_Slope = "null";
        }

        [XmlElement("Recipe_ID")]
        public string Recipe_ID { get; set; }


        [XmlElement("ACC_PR_T_Pressure")]
        public string ACC_PR_T_Pressure { get; set; }

        [XmlElement("ACC_PR_B_Pressure")]
        public string ACC_PR_B_Pressure { get; set; }

        [XmlElement("Em_Cutting_Spd_1")]
        public string Em_Cutting_Spd_1 { get; set; }

        [XmlElement("Em_Chipload_1")]
        public string Em_Chipload_1 { get; set; }

        [XmlElement("Em_Cutting_Spd_2")]
        public string Em_Cutting_Spd_2 { get; set; }

        [XmlElement("Em_Chipload_2")]
        public string Em_Chipload_2 { get; set; }

        [XmlElement("Sa1_Power")]
        public string Sa1_Power { get; set; }

        [XmlElement("Sa1_Temp")]
        public string Sa1_Temp { get; set; }

        [XmlElement("Sa1_Height")]
        public string Sa1_Height { get; set; }

        [XmlElement("Sa1_Freq")]
        public string Sa1_Freq { get; set; }

        [XmlElement("Sa2_Power")]
        public string Sa2_Power { get; set; }

        [XmlElement("Sa2_Temp")]
        public string Sa2_Temp { get; set; }

        [XmlElement("Sa2_Height")]
        public string Sa2_Height { get; set; }

        [XmlElement("Sa2_Freq")]
        public string Sa2_Freq { get; set; }

        [XmlElement("Sa3_Power")]
        public string Sa3_Power { get; set; }

        [XmlElement("Sa3_Temp")]
        public string Sa3_Temp { get; set; }

        [XmlElement("Sa3_Height")]
        public string Sa3_Height { get; set; }

        [XmlElement("Sa3_Freq")]
        public string Sa3_Freq { get; set; }

        [XmlElement("Sa4_Power")]
        public string Sa4_Power { get; set; }

        [XmlElement("Sa4_Temp")]
        public string Sa4_Temp { get; set; }

        [XmlElement("Sa4_Height")]
        public string Sa4_Height { get; set; }

        [XmlElement("Sa4_Freq")]
        public string Sa4_Freq { get; set; }

        [XmlElement("Hfw_LineSpeed")]
        public string Hfw_LineSpeed { get; set; }

        [XmlElement("Hfw_Power")]
        public string Hfw_Power { get; set; }

        [XmlElement("Hfw_Freq")]
        public string Hfw_Freq { get; set; }

        [XmlElement("HFW_VEE_X")]
        public string HFW_VEE_X { get; set; }

        [XmlElement("HFW_Mode")]
        public string HFW_Mode { get; set; }

        [XmlElement("HFW_PreHeatPower")]
        public string HFW_PreHeatPower { get; set; }

        [XmlElement("HFW_Temperature")]
        public string HFW_Temperature { get; set; }

        [XmlElement("HFW_SPC_Gain")]
        public string HFW_SPC_Gain { get; set; }

        [XmlElement("HFW_SPC_Slope")]
        public string HFW_SPC_Slope { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class MillLineParameteraAddress : SubscriptionGroupBase
    {
        public MillLineParameteraAddress() : base(1000, 1000, "MillLineParameteraAddress")
        {
            Strip_1 = "null";
            Strip_2 = "null";
            Strip_3 = "null";

            HFW_VEE_Length = "null";
            HFW_Panel_Cooling = "null";

            LHT_Panel_Cooling = "null";
            LHT_Inductor_Cooling = "null";

            JA_Panel_Cooling = "null";
            JA_Inductor_Cooling = "null";

            LineSpeed = "null";
            QT = "null";

        }

        [XmlElement("LineSpeed")]
        public string LineSpeed { get; set; }

        [XmlElement("QT")]
        public string QT { get; set; }

        [XmlElement("HFW_VEE_Length")]
        public string HFW_VEE_Length { get; set; }

        [XmlElement("JA_Panel_Cooling")]
        public string JA_Panel_Cooling { get; set; }

        [XmlElement("JA_Inductor_Cooling")]
        public string JA_Inductor_Cooling { get; set; }

        [XmlElement("HFW_Panel_Cooling")]
        public string HFW_Panel_Cooling { get; set; }

        [XmlElement("LHT_Panel_Cooling")]
        public string LHT_Panel_Cooling { get; set; }

        [XmlElement("LHT_Inductor_Cooling")]
        public string LHT_Inductor_Cooling { get; set; }

        [XmlElement("Strip_1")]
        public string Strip_1 { get; set; }

        [XmlElement("Strip_2")]
        public string Strip_2 { get; set; }

        [XmlElement("Strip_3")]
        public string Strip_3 { get; set; }


        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class MillLineProcessDataAddress_50 : SubscriptionGroupBase
    {
        public MillLineProcessDataAddress_50() : base(100, 1, "MillLineProcessDataAddress_50")
        {
            Dtj_1 = "null";
            Dtj_2 = "null";
            Dtj_3 = "null";

            StripStart_1 = "null";
            StripStart_2 = "null";
            StripStart_3 = "null";

            StripEnd_1 = "null";
            StripEnd_2 = "null";
            StripEnd_3 = "null";

            HFW_Power = "null";
            HFW_Freq = "null";
            HFW_Tempe = "null";
            HFW_Curt = "null";
            HFW_Volt = "null";

            LHT1_Power = "null";
            LHT1_Freq = "null";
            LHT1_Tempe = "null";
            LHT1_Curt = "null";
            LHT1_Volt = "null";

            LHT2_Power = "null";
            LHT2_Freq = "null";
            LHT2_Tempe = "null";
            LHT2_Curt = "null";
            LHT2_Volt = "null";

            LHT3_Power = "null";
            LHT3_Freq = "null";
            LHT3_Tempe = "null";
            LHT3_Curt = "null";
            LHT3_Volt = "null";

            LHT4_Power = "null";
            LHT4_Freq = "null";
            LHT4_Tempe = "null";
            LHT4_Curt = "null";
            LHT4_Volt = "null";

            QC = "null";

            SQ_1 = "null";
            SQ_2 = "null";
            SQ_3 = "null";
            SQ_4 = "null";

        }
        [XmlElement("Dtj_1")]
        public string Dtj_1 { get; set; }

        [XmlElement("Dtj_2")]
        public string Dtj_2 { get; set; }

        [XmlElement("Dtj_3")]
        public string Dtj_3 { get; set; }

        [XmlElement("StripStart_1")]
        public string StripStart_1 { get; set; }

        [XmlElement("StripStart_2")]
        public string StripStart_2 { get; set; }

        [XmlElement("StripStart_3")]
        public string StripStart_3 { get; set; }

        [XmlElement("StripEnd_1")]
        public string StripEnd_1 { get; set; }

        [XmlElement("StripEnd_2")]
        public string StripEnd_2 { get; set; }

        [XmlElement("StripEnd_3")]
        public string StripEnd_3 { get; set; }

        [XmlElement("HFW_Power")]
        public string HFW_Power { get; set; }

        [XmlElement("HFW_Freq")]
        public string HFW_Freq { get; set; }

        [XmlElement("HFW_Tempe")]
        public string HFW_Tempe { get; set; }

        [XmlElement("HFW_Curt")]
        public string HFW_Curt { get; set; }

        [XmlElement("HFW_Volt")]
        public string HFW_Volt { get; set; }

        [XmlElement("LHT1_Power")]
        public string LHT1_Power { get; set; }

        [XmlElement("LHT1_Freq")]
        public string LHT1_Freq { get; set; }

        [XmlElement("LHT1_Tempe")]
        public string LHT1_Tempe { get; set; }

        [XmlElement("LHT1_Curt")]
        public string LHT1_Curt { get; set; }

        [XmlElement("LHT1_Volt")]
        public string LHT1_Volt { get; set; }

        [XmlElement("LHT2_Power")]
        public string LHT2_Power { get; set; }

        [XmlElement("LHT2_Freq")]
        public string LHT2_Freq { get; set; }

        [XmlElement("LHT2_Tempe")]
        public string LHT2_Tempe { get; set; }

        [XmlElement("LHT2_Curt")]
        public string LHT2_Curt { get; set; }

        [XmlElement("LHT2_Volt")]
        public string LHT2_Volt { get; set; }

        [XmlElement("LHT3_Power")]
        public string LHT3_Power { get; set; }

        [XmlElement("LHT3_Freq")]
        public string LHT3_Freq { get; set; }

        [XmlElement("LHT3_Tempe")]
        public string LHT3_Tempe { get; set; }

        [XmlElement("LHT3_Curt")]
        public string LHT3_Curt { get; set; }

        [XmlElement("LHT3_Volt")]
        public string LHT3_Volt { get; set; }

        [XmlElement("LHT4_Power")]
        public string LHT4_Power { get; set; }

        [XmlElement("LHT4_Freq")]
        public string LHT4_Freq { get; set; }

        [XmlElement("LHT4_Tempe")]
        public string LHT4_Tempe { get; set; }

        [XmlElement("LHT4_Curt")]
        public string LHT4_Curt { get; set; }

        [XmlElement("LHT4_Volt")]
        public string LHT4_Volt { get; set; }

        [XmlElement("QC")]
        public string QC { get; set; }

        [XmlElement("SQ_1")]
        public string SQ_1 { get; set; }

        [XmlElement("SQ_2")]
        public string SQ_2 { get; set; }

        [XmlElement("SQ_3")]
        public string SQ_3 { get; set; }

        [XmlElement("SQ_4")]
        public string SQ_4 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class MillLineProcessDataAddress_100 : SubscriptionGroupBase
    {
        public MillLineProcessDataAddress_100() : base(100, 1, "MillLineProcessDataAddress_100")
        {
            Dtj_1 = "null";
            Dtj_2 = "null";
            Dtj_3 = "null";

            StripStart_1 = "null";
            StripStart_2 = "null";
            StripStart_3 = "null";

            StripEnd_1 = "null";
            StripEnd_2 = "null";
            StripEnd_3 = "null";

            HFW_Power = "null";
            HFW_Freq = "null";
            HFW_Tempe = "null";
            HFW_Curt = "null";
            HFW_Volt = "null";

            LHT1_Power = "null";
            LHT1_Freq = "null";
            LHT1_Tempe = "null";
            LHT1_Curt = "null";
            LHT1_Volt = "null";

            LHT2_Power = "null";
            LHT2_Freq = "null";
            LHT2_Tempe = "null";
            LHT2_Curt = "null";
            LHT2_Volt = "null";

            LHT3_Power = "null";
            LHT3_Freq = "null";
            LHT3_Tempe = "null";
            LHT3_Curt = "null";
            LHT3_Volt = "null";

            LHT4_Power = "null";
            LHT4_Freq = "null";
            LHT4_Tempe = "null";
            LHT4_Curt = "null";
            LHT4_Volt = "null";

            QC = "null";

            SQ_1 = "null";
            SQ_2 = "null";
            SQ_3 = "null";
            SQ_4 = "null";

        }
        [XmlElement("Dtj_1")]
        public string Dtj_1 { get; set; }

        [XmlElement("Dtj_2")]
        public string Dtj_2 { get; set; }

        [XmlElement("Dtj_3")]
        public string Dtj_3 { get; set; }

        [XmlElement("StripStart_1")]
        public string StripStart_1 { get; set; }

        [XmlElement("StripStart_2")]
        public string StripStart_2 { get; set; }

        [XmlElement("StripStart_3")]
        public string StripStart_3 { get; set; }

        [XmlElement("StripEnd_1")]
        public string StripEnd_1 { get; set; }

        [XmlElement("StripEnd_2")]
        public string StripEnd_2 { get; set; }

        [XmlElement("StripEnd_3")]
        public string StripEnd_3 { get; set; }

        [XmlElement("HFW_Power")]
        public string HFW_Power { get; set; }

        [XmlElement("HFW_Freq")]
        public string HFW_Freq { get; set; }

        [XmlElement("HFW_Tempe")]
        public string HFW_Tempe { get; set; }

        [XmlElement("HFW_Curt")]
        public string HFW_Curt { get; set; }

        [XmlElement("HFW_Volt")]
        public string HFW_Volt { get; set; }

        [XmlElement("LHT1_Power")]
        public string LHT1_Power { get; set; }

        [XmlElement("LHT1_Freq")]
        public string LHT1_Freq { get; set; }

        [XmlElement("LHT1_Tempe")]
        public string LHT1_Tempe { get; set; }

        [XmlElement("LHT1_Curt")]
        public string LHT1_Curt { get; set; }

        [XmlElement("LHT1_Volt")]
        public string LHT1_Volt { get; set; }

        [XmlElement("LHT2_Power")]
        public string LHT2_Power { get; set; }

        [XmlElement("LHT2_Freq")]
        public string LHT2_Freq { get; set; }

        [XmlElement("LHT2_Tempe")]
        public string LHT2_Tempe { get; set; }

        [XmlElement("LHT2_Curt")]
        public string LHT2_Curt { get; set; }

        [XmlElement("LHT2_Volt")]
        public string LHT2_Volt { get; set; }

        [XmlElement("LHT3_Power")]
        public string LHT3_Power { get; set; }

        [XmlElement("LHT3_Freq")]
        public string LHT3_Freq { get; set; }

        [XmlElement("LHT3_Tempe")]
        public string LHT3_Tempe { get; set; }

        [XmlElement("LHT3_Curt")]
        public string LHT3_Curt { get; set; }

        [XmlElement("LHT3_Volt")]
        public string LHT3_Volt { get; set; }

        [XmlElement("LHT4_Power")]
        public string LHT4_Power { get; set; }

        [XmlElement("LHT4_Freq")]
        public string LHT4_Freq { get; set; }

        [XmlElement("LHT4_Tempe")]
        public string LHT4_Tempe { get; set; }

        [XmlElement("LHT4_Curt")]
        public string LHT4_Curt { get; set; }

        [XmlElement("LHT4_Volt")]
        public string LHT4_Volt { get; set; }

        [XmlElement("QC")]
        public string QC { get; set; }

        [XmlElement("SQ_1")]
        public string SQ_1 { get; set; }

        [XmlElement("SQ_2")]
        public string SQ_2 { get; set; }

        [XmlElement("SQ_3")]
        public string SQ_3 { get; set; }

        [XmlElement("SQ_4")]
        public string SQ_4 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class MillLineProcessDataAddress_150 : SubscriptionGroupBase
    {
        public MillLineProcessDataAddress_150() : base(100, 1, "MillLineProcessDataAddress_150")
        {
            Dtj_1 = "null";
            Dtj_2 = "null";
            Dtj_3 = "null";

            StripStart_1 = "null";
            StripStart_2 = "null";
            StripStart_3 = "null";

            StripEnd_1 = "null";
            StripEnd_2 = "null";
            StripEnd_3 = "null";

            HFW_Power = "null";
            HFW_Freq = "null";
            HFW_Tempe = "null";
            HFW_Curt = "null";
            HFW_Volt = "null";

            LHT1_Power = "null";
            LHT1_Freq = "null";
            LHT1_Tempe = "null";
            LHT1_Curt = "null";
            LHT1_Volt = "null";

            LHT2_Power = "null";
            LHT2_Freq = "null";
            LHT2_Tempe = "null";
            LHT2_Curt = "null";
            LHT2_Volt = "null";

            LHT3_Power = "null";
            LHT3_Freq = "null";
            LHT3_Tempe = "null";
            LHT3_Curt = "null";
            LHT3_Volt = "null";

            LHT4_Power = "null";
            LHT4_Freq = "null";
            LHT4_Tempe = "null";
            LHT4_Curt = "null";
            LHT4_Volt = "null";

            QC = "null";

            SQ_1 = "null";
            SQ_2 = "null";
            SQ_3 = "null";
            SQ_4 = "null";

        }
        [XmlElement("Dtj_1")]
        public string Dtj_1 { get; set; }

        [XmlElement("Dtj_2")]
        public string Dtj_2 { get; set; }

        [XmlElement("Dtj_3")]
        public string Dtj_3 { get; set; }

        [XmlElement("StripStart_1")]
        public string StripStart_1 { get; set; }

        [XmlElement("StripStart_2")]
        public string StripStart_2 { get; set; }

        [XmlElement("StripStart_3")]
        public string StripStart_3 { get; set; }

        [XmlElement("StripEnd_1")]
        public string StripEnd_1 { get; set; }

        [XmlElement("StripEnd_2")]
        public string StripEnd_2 { get; set; }

        [XmlElement("StripEnd_3")]
        public string StripEnd_3 { get; set; }

        [XmlElement("HFW_Power")]
        public string HFW_Power { get; set; }

        [XmlElement("HFW_Freq")]
        public string HFW_Freq { get; set; }

        [XmlElement("HFW_Tempe")]
        public string HFW_Tempe { get; set; }

        [XmlElement("HFW_Curt")]
        public string HFW_Curt { get; set; }

        [XmlElement("HFW_Volt")]
        public string HFW_Volt { get; set; }

        [XmlElement("LHT1_Power")]
        public string LHT1_Power { get; set; }

        [XmlElement("LHT1_Freq")]
        public string LHT1_Freq { get; set; }

        [XmlElement("LHT1_Tempe")]
        public string LHT1_Tempe { get; set; }

        [XmlElement("LHT1_Curt")]
        public string LHT1_Curt { get; set; }

        [XmlElement("LHT1_Volt")]
        public string LHT1_Volt { get; set; }

        [XmlElement("LHT2_Power")]
        public string LHT2_Power { get; set; }

        [XmlElement("LHT2_Freq")]
        public string LHT2_Freq { get; set; }

        [XmlElement("LHT2_Tempe")]
        public string LHT2_Tempe { get; set; }

        [XmlElement("LHT2_Curt")]
        public string LHT2_Curt { get; set; }

        [XmlElement("LHT2_Volt")]
        public string LHT2_Volt { get; set; }

        [XmlElement("LHT3_Power")]
        public string LHT3_Power { get; set; }

        [XmlElement("LHT3_Freq")]
        public string LHT3_Freq { get; set; }

        [XmlElement("LHT3_Tempe")]
        public string LHT3_Tempe { get; set; }

        [XmlElement("LHT3_Curt")]
        public string LHT3_Curt { get; set; }

        [XmlElement("LHT3_Volt")]
        public string LHT3_Volt { get; set; }

        [XmlElement("LHT4_Power")]
        public string LHT4_Power { get; set; }

        [XmlElement("LHT4_Freq")]
        public string LHT4_Freq { get; set; }

        [XmlElement("LHT4_Tempe")]
        public string LHT4_Tempe { get; set; }

        [XmlElement("LHT4_Curt")]
        public string LHT4_Curt { get; set; }

        [XmlElement("LHT4_Volt")]
        public string LHT4_Volt { get; set; }

        [XmlElement("QC")]
        public string QC { get; set; }

        [XmlElement("SQ_1")]
        public string SQ_1 { get; set; }

        [XmlElement("SQ_2")]
        public string SQ_2 { get; set; }

        [XmlElement("SQ_3")]
        public string SQ_3 { get; set; }

        [XmlElement("SQ_4")]
        public string SQ_4 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class MillLineProcessDataAddress_200 : SubscriptionGroupBase
    {
        public MillLineProcessDataAddress_200() : base(100, 1, "MillLineProcessDataAddress_200")
        {
            Dtj_1 = "null";
            Dtj_2 = "null";
            Dtj_3 = "null";

            StripStart_1 = "null";
            StripStart_2 = "null";
            StripStart_3 = "null";

            StripEnd_1 = "null";
            StripEnd_2 = "null";
            StripEnd_3 = "null";

            HFW_Power = "null";
            HFW_Freq = "null";
            HFW_Tempe = "null";
            HFW_Curt = "null";
            HFW_Volt = "null";

            LHT1_Power = "null";
            LHT1_Freq = "null";
            LHT1_Tempe = "null";
            LHT1_Curt = "null";
            LHT1_Volt = "null";

            LHT2_Power = "null";
            LHT2_Freq = "null";
            LHT2_Tempe = "null";
            LHT2_Curt = "null";
            LHT2_Volt = "null";

            LHT3_Power = "null";
            LHT3_Freq = "null";
            LHT3_Tempe = "null";
            LHT3_Curt = "null";
            LHT3_Volt = "null";

            LHT4_Power = "null";
            LHT4_Freq = "null";
            LHT4_Tempe = "null";
            LHT4_Curt = "null";
            LHT4_Volt = "null";

            QC = "null";

            SQ_1 = "null";
            SQ_2 = "null";
            SQ_3 = "null";
            SQ_4 = "null";

        }
        [XmlElement("Dtj_1")]
        public string Dtj_1 { get; set; }

        [XmlElement("Dtj_2")]
        public string Dtj_2 { get; set; }

        [XmlElement("Dtj_3")]
        public string Dtj_3 { get; set; }

        [XmlElement("StripStart_1")]
        public string StripStart_1 { get; set; }

        [XmlElement("StripStart_2")]
        public string StripStart_2 { get; set; }

        [XmlElement("StripStart_3")]
        public string StripStart_3 { get; set; }

        [XmlElement("StripEnd_1")]
        public string StripEnd_1 { get; set; }

        [XmlElement("StripEnd_2")]
        public string StripEnd_2 { get; set; }

        [XmlElement("StripEnd_3")]
        public string StripEnd_3 { get; set; }

        [XmlElement("HFW_Power")]
        public string HFW_Power { get; set; }

        [XmlElement("HFW_Freq")]
        public string HFW_Freq { get; set; }

        [XmlElement("HFW_Tempe")]
        public string HFW_Tempe { get; set; }

        [XmlElement("HFW_Curt")]
        public string HFW_Curt { get; set; }

        [XmlElement("HFW_Volt")]
        public string HFW_Volt { get; set; }

        [XmlElement("LHT1_Power")]
        public string LHT1_Power { get; set; }

        [XmlElement("LHT1_Freq")]
        public string LHT1_Freq { get; set; }

        [XmlElement("LHT1_Tempe")]
        public string LHT1_Tempe { get; set; }

        [XmlElement("LHT1_Curt")]
        public string LHT1_Curt { get; set; }

        [XmlElement("LHT1_Volt")]
        public string LHT1_Volt { get; set; }

        [XmlElement("LHT2_Power")]
        public string LHT2_Power { get; set; }

        [XmlElement("LHT2_Freq")]
        public string LHT2_Freq { get; set; }

        [XmlElement("LHT2_Tempe")]
        public string LHT2_Tempe { get; set; }

        [XmlElement("LHT2_Curt")]
        public string LHT2_Curt { get; set; }

        [XmlElement("LHT2_Volt")]
        public string LHT2_Volt { get; set; }

        [XmlElement("LHT3_Power")]
        public string LHT3_Power { get; set; }

        [XmlElement("LHT3_Freq")]
        public string LHT3_Freq { get; set; }

        [XmlElement("LHT3_Tempe")]
        public string LHT3_Tempe { get; set; }

        [XmlElement("LHT3_Curt")]
        public string LHT3_Curt { get; set; }

        [XmlElement("LHT3_Volt")]
        public string LHT3_Volt { get; set; }

        [XmlElement("LHT4_Power")]
        public string LHT4_Power { get; set; }

        [XmlElement("LHT4_Freq")]
        public string LHT4_Freq { get; set; }

        [XmlElement("LHT4_Tempe")]
        public string LHT4_Tempe { get; set; }

        [XmlElement("LHT4_Curt")]
        public string LHT4_Curt { get; set; }

        [XmlElement("LHT4_Volt")]
        public string LHT4_Volt { get; set; }

        [XmlElement("QC")]
        public string QC { get; set; }

        [XmlElement("SQ_1")]
        public string SQ_1 { get; set; }

        [XmlElement("SQ_2")]
        public string SQ_2 { get; set; }

        [XmlElement("SQ_3")]
        public string SQ_3 { get; set; }

        [XmlElement("SQ_4")]
        public string SQ_4 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class DowntimeAddress:SubscriptionGroupBase
	{
		public DowntimeAddress():base(100,1, "DowntimeAddress")
		{
			Status = "null";
		}
		[XmlElement("Status")]
		public string Status { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

    //5+U01
	public class FcoAddress:SubscriptionGroupBase
	{
		public FcoAddress():base(100,1, "FcoAddress")
		{
			FcoAsk = "null";
			FcoRsp = "null";
		}
		[XmlElement("FcoAsk")]
		public string FcoAsk { get; set; }

		[XmlElement("FcoRsp")]
		public string FcoRsp { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

	public class FcoPipeInfoAddress:SubscriptionGroupBase
	{
		public FcoPipeInfoAddress():base(1000,1000, "FcoPipeInfoAddress")
		{
			Strip_No = "null";
			Pipe_No = "null";
			Batch_No = "null";
			Strip_Seq = "null";
			Location = "null";
			Dtj = "null";
			Length = "null";
			Quality_Code = "null";
            Quality_Code2 = "null";

            SampleReason = "null";
            FLTLength = "null";
            MACLength = "null";
            ADDLength = "null";

            HeadCut = "null";
            TailCut = "null";

        }
		[XmlElement("Strip_No")]
		public string Strip_No { get; set; }

		[XmlElement("Pipe_No")]
		public string Pipe_No { get; set; }

		[XmlElement("Batch_No")]
		public string Batch_No { get; set; }

		[XmlElement("Strip_Seq")]
		public string Strip_Seq { get; set; }

		[XmlElement("Location")]
		public string Location { get; set; }

		[XmlElement("Dtj")]
		public string Dtj { get; set; }

		[XmlElement("Length")]
		public string Length { get; set; }

		[XmlElement("Quality_Code")]
		public string Quality_Code { get; set; }

        [XmlElement("Quality_Code2")]
        public string Quality_Code2 { get; set; }

        [XmlElement("SampleReason")]
        public string SampleReason { get; set; }

        [XmlElement("FLTLength")]
        public string FLTLength { get; set; }

        [XmlElement("MACLength")]
        public string MACLength { get; set; }

        [XmlElement("ADDLength")]
        public string ADDLength { get; set; }

        [XmlElement("HeadCut")]
        public string HeadCut { get; set; }

        [XmlElement("TailCut")]
        public string TailCut { get; set; }

        public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

    public class FCOBladeAddress : SubscriptionGroupBase
    {
        public FCOBladeAddress() : base(100, 100, "FCOBladeAddress")
        {
            BladeUpdate_1 = "null";
            BladeRsp_1 = "null";
            BladeUpdate_2 = "null";
            BladeRsp_2 = "null";
        }
        [XmlElement("BladeUpdate_1")]
        public string BladeUpdate_1 { get; set; }

        [XmlElement("BladeRsp_1")]
        public string BladeRsp_1 { get; set; }

        [XmlElement("BladeUpdate_2")]
        public string BladeUpdate_2 { get; set; }

        [XmlElement("BladeRsp_2")]
        public string BladeRsp_2 { get; set; }


        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class FCOBladeInfoAddress : SubscriptionGroupBase
    {
        public FCOBladeInfoAddress() : base(1000, 1000, "FCOBladeInfoAddress")
        {
            Bld1_SNr = "null";
            Bld1_OD = "null";
            Bld1_WT = "null";
            Bld1_TNr = "null";
            Bld1_CutArea = "null";
            Bld2_SNr = "null";
            Bld2_OD = "null";
            Bld2_WT = "null";
            Bld2_TNr = "null";
            Bld2_CutArea = "null";
        }
        [XmlElement("Bld1_SNr")]
        public string Bld1_SNr { get; set; }

        [XmlElement("Bld1_OD")]
        public string Bld1_OD { get; set; }

        [XmlElement("Bld1_WT")]
        public string Bld1_WT { get; set; }

        [XmlElement("Bld1_TNr")]
        public string Bld1_TNr { get; set; }

        [XmlElement("Bld1_CutArea")]
        public string Bld1_CutArea { get; set; }

        [XmlElement("Bld2_SNr")]
        public string Bld2_SNr { get; set; }

        [XmlElement("Bld2_OD")]
        public string Bld2_OD { get; set; }

        [XmlElement("Bld2_WT")]
        public string Bld2_WT { get; set; }

        [XmlElement("Bld2_TNr")]
        public string Bld2_TNr { get; set; }

        [XmlElement("Bld2_CutArea")]
        public string Bld2_CutArea { get; set; }



        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    //7+U01
    public class PipeEventAddress1 : SubscriptionGroupBase
    {
        public PipeEventAddress1() : base(100, 1, "PipeEventAddress1")
        {
            PipeInfoAsk = "null";
            PipeInfoRsp = "null";
        }
        [XmlElement("PipeInfoAsk")]
        public string PipeInfoAsk { get; set; }

        [XmlElement("PipeInfoRsp")]
        public string PipeInfoRsp { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class PipeEventDataAddress1 : SubscriptionGroupBase
    {
        public PipeEventDataAddress1() : base(100, 1, "PipeEventDataAddress1")
        {
            Batch_No = "null";
            Pipe_No = "null";
        }
        [XmlElement("Batch_No")]
        public string Batch_No { get; set; }

        [XmlElement("Pipe_No")]
        public string Pipe_No { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class PipeDataAddress1 : SubscriptionGroupBase
    {
        public PipeDataAddress1() : base(1000, 1000, "PipeDataAddress1")
        {
            Task_No = "null";
            Is_Spy = "null";
            Strip_Durability = "null";
            Strip_Thk = "null";
            Standard_Code = "null";
            Pipe_Nominal_Lenght = "null";
            Pipe_Max_Length = "null";
            Pipe_Min_Length = "null";
            Pipe_Nominal_Od = "null";
            Pipe_Max_Od = "null";
            Pipe_Min_Od = "null";
            Pipe_Nominal_Thickness = "null";
            Pipe_Min_Thickness = "null";
            Inner_Bead_Isremoving = "null";
            Inner_Bead_Height = "null";
            Inner_Bead_Depth = "null";
            Ovality_Up_Limit = "null";
            Body_Straightness = "null";
            End_Straightness = "null";
            Strip_No = "null";
            Strip_Seq = "null";
            Dtj = "null";
            Length = "null";
            Quality_Code = "null";
            Quality_Code2 = "null";
            SampleReason = "null";
            FLTLength = "null";
            MACLength = "null";
            ADDLength = "null";
            HeadCut = "null";
            TailCut = "null";
        }
        [XmlElement("Task_No")]
        public string Task_No { get; set; }

        [XmlElement("Is_Spy")]
        public string Is_Spy { get; set; }

        [XmlElement("Strip_Durability")]
        public string Strip_Durability { get; set; }

        [XmlElement("Strip_Thk")]
        public string Strip_Thk { get; set; }

        [XmlElement("Standard_Code")]
        public string Standard_Code { get; set; }

        [XmlElement("Pipe_Nominal_Lenght")]
        public string Pipe_Nominal_Lenght { get; set; }

        [XmlElement("Pipe_Max_Length")]
        public string Pipe_Max_Length { get; set; }

        [XmlElement("Pipe_Min_Length")]
        public string Pipe_Min_Length { get; set; }

        [XmlElement("Pipe_Nominal_Od")]
        public string Pipe_Nominal_Od { get; set; }

        [XmlElement("Pipe_Max_Od")]
        public string Pipe_Max_Od { get; set; }

        [XmlElement("Pipe_Min_Od")]
        public string Pipe_Min_Od { get; set; }

        [XmlElement("Pipe_Nominal_Thickness")]
        public string Pipe_Nominal_Thickness { get; set; }

        [XmlElement("Pipe_Min_Thickness")]
        public string Pipe_Min_Thickness { get; set; }

        [XmlElement("Inner_Bead_Isremoving")]
        public string Inner_Bead_Isremoving { get; set; }

        [XmlElement("Inner_Bead_Height")]
        public string Inner_Bead_Height { get; set; }

        [XmlElement("Inner_Bead_Depth")]
        public string Inner_Bead_Depth { get; set; }

        [XmlElement("Ovality_Up_Limit")]
        public string Ovality_Up_Limit { get; set; }

        [XmlElement("Body_Straightness")]
        public string Body_Straightness { get; set; }

        [XmlElement("End_Straightness")]
        public string End_Straightness { get; set; }

        [XmlElement("Strip_No")]
        public string Strip_No { get; set; }

        [XmlElement("Strip_Seq")]
        public string Strip_Seq { get; set; }

        [XmlElement("Dtj")]
        public string Dtj { get; set; }

        [XmlElement("Length")]
        public string Length { get; set; }

        [XmlElement("Quality_Code")]
        public string Quality_Code { get; set; }

        [XmlElement("Quality_Code2")]
        public string Quality_Code2 { get; set; }

        [XmlElement("SampleReason")]
        public string SampleReason { get; set; }

        [XmlElement("FLTLength")]
        public string FLTLength { get; set; }

        [XmlElement("MACLength")]
        public string MACLength { get; set; }

        [XmlElement("ADDLength")]
        public string ADDLength { get; set; }

        [XmlElement("HeadCut")]
        public string HeadCut { get; set; }

        [XmlElement("TailCut")]
        public string TailCut { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Bc1Address : SubscriptionGroupBase
	{
		public Bc1Address() : base(100, 100, "Bc1Address")
		{
			Print_Request = "null";
			Print_Finished = "null";
			Bundle_Complete = "null";
			Clear = "null";
		}
		[XmlElement("Print_Request")]
		public string Print_Request { get; set; }

		[XmlElement("Print_Finished")]
		public string Print_Finished { get; set; }

		[XmlElement("Bundle_Complete")]
		public string Bundle_Complete { get; set; }

		[XmlElement("Clear")]
		public string Clear { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

	public class Bc1CurrentPipeAddress : SubscriptionGroupBase
	{
		public Bc1CurrentPipeAddress() : base(100, 100, "Bc1CurrentPipeAddress")
		{
			Batch_No = "null";
			Pipe_No = "null";
			Pipe_Quantity = "null";
		}
		[XmlElement("Batch_No")]
		public string Batch_No { get; set; }

		[XmlElement("Pipe_No")]
		public string Pipe_No { get; set; }

		[XmlElement("Pipe_Quantity")]
		public string Pipe_Quantity { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

	public class Bc1HistoryPipeAddress : SubscriptionGroupBase
	{
		public Bc1HistoryPipeAddress() : base(30000, 30000, "Bc1HistoryPipeAddress")
		{
            BufferCount = 0;
			Batch_No_1 = "null";
			Pipe_No_1 = "null";
		}

        [XmlElement("BufferCount")]
        public int BufferCount { get; set; }

        [XmlElement("Batch_No_1")]
		public string Batch_No_1 { get; set; }

		[XmlElement("Pipe_No_1")]
		public string Pipe_No_1 { get; set; }		

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

	public class Bc2Address : SubscriptionGroupBase
	{
		public Bc2Address() : base(100, 100, "Bc2Address")
		{
			Print_Request = "null";
			Print_Finished = "null";
			Bundle_Complete = "null";
			Clear = "null";
		}
		[XmlElement("Print_Request")]
		public string Print_Request { get; set; }

		[XmlElement("Print_Finished")]
		public string Print_Finished { get; set; }

		[XmlElement("Bundle_Complete")]
		public string Bundle_Complete { get; set; }

		[XmlElement("Clear")]
		public string Clear { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

	public class Bc2CurrentPipeAddress : SubscriptionGroupBase
	{
		public Bc2CurrentPipeAddress() : base(100, 100, "Bc2CurrentPipeAddress")
		{
			Batch_No = "null";
			Pipe_No = "null";
			Pipe_Quantity = "null";
		}
		[XmlElement("Batch_No")]
		public string Batch_No { get; set; }

		[XmlElement("Pipe_No")]
		public string Pipe_No { get; set; }

		[XmlElement("Pipe_Quantity")]
		public string Pipe_Quantity { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

    public class Bc2HistoryPipeAddress : SubscriptionGroupBase
    {
        public Bc2HistoryPipeAddress() : base(30000, 30000, "Bc2HistoryPipeAddress")
        {
            BufferCount = 0;
            Batch_No_1 = "null";
            Pipe_No_1 = "null";
        }

        [XmlElement("BufferCount")]
        public int BufferCount { get; set; }

        [XmlElement("Batch_No_1")]
        public string Batch_No_1 { get; set; }

        [XmlElement("Pipe_No_1")]
        public string Pipe_No_1 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Sc1Address : SubscriptionGroupBase
    {
        public Sc1Address() : base(100, 100, "Sc1Address")
        {
            Print_Request = "null";
            Print_Finished = "null";
            Bundle_Complete = "null";
            Clear = "null";
        }
        [XmlElement("Print_Request")]
        public string Print_Request { get; set; }

        [XmlElement("Print_Finished")]
        public string Print_Finished { get; set; }

        [XmlElement("Bundle_Complete")]
        public string Bundle_Complete { get; set; }

        [XmlElement("Clear")]
        public string Clear { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Sc1CurrentPipeAddress : SubscriptionGroupBase
    {
        public Sc1CurrentPipeAddress() : base(100, 100, "Sc1CurrentPipeAddress")
        {
            Batch_No = "null";
            Pipe_No = "null";
            Pipe_Quantity = "null";
        }
        [XmlElement("Batch_No")]
        public string Batch_No { get; set; }

        [XmlElement("Pipe_No")]
        public string Pipe_No { get; set; }

        [XmlElement("Pipe_Quantity")]
        public string Pipe_Quantity { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Sc1HistoryPipeAddress : SubscriptionGroupBase
    {
        public Sc1HistoryPipeAddress() : base(30000, 30000, "Sc1HistoryPipeAddress")
        {
            BufferCount = 0;
            Batch_No_1 = "null";
            Pipe_No_1 = "null";
        }

        [XmlElement("BufferCount")]
        public int BufferCount { get; set; }

        [XmlElement("Batch_No_1")]
        public string Batch_No_1 { get; set; }

        [XmlElement("Pipe_No_1")]
        public string Pipe_No_1 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Sc2Address : SubscriptionGroupBase
    {
        public Sc2Address() : base(100, 100, "Sc2Address")
        {
            Print_Request = "null";
            Print_Finished = "null";
            Bundle_Complete = "null";
            Clear = "null";
        }
        [XmlElement("Print_Request")]
        public string Print_Request { get; set; }

        [XmlElement("Print_Finished")]
        public string Print_Finished { get; set; }

        [XmlElement("Bundle_Complete")]
        public string Bundle_Complete { get; set; }

        [XmlElement("Clear")]
        public string Clear { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Sc2CurrentPipeAddress : SubscriptionGroupBase
    {
        public Sc2CurrentPipeAddress() : base(100, 100, "Sc2CurrentPipeAddress")
        {
            Batch_No = "null";
            Pipe_No = "null";
            Pipe_Quantity = "null";
        }
        [XmlElement("Batch_No")]
        public string Batch_No { get; set; }

        [XmlElement("Pipe_No")]
        public string Pipe_No { get; set; }

        [XmlElement("Pipe_Quantity")]
        public string Pipe_Quantity { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Sc2HistoryPipeAddress : SubscriptionGroupBase
    {
        public Sc2HistoryPipeAddress() : base(30000, 30000, "Sc2HistoryPipeAddress")
        {
            BufferCount = 0;
            Batch_No_1 = "null";
            Pipe_No_1 = "null";
        }

        [XmlElement("BufferCount")]
        public int BufferCount { get; set; }

        [XmlElement("Batch_No_1")]
        public string Batch_No_1 { get; set; }

        [XmlElement("Pipe_No_1")]
        public string Pipe_No_1 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Sc3Address : SubscriptionGroupBase
    {
        public Sc3Address() : base(100, 100, "Sc3Address")
        {
            Print_Request = "null";
            Print_Finished = "null";
            Bundle_Complete = "null";
            Clear = "null";
        }
        [XmlElement("Print_Request")]
        public string Print_Request { get; set; }

        [XmlElement("Print_Finished")]
        public string Print_Finished { get; set; }

        [XmlElement("Bundle_Complete")]
        public string Bundle_Complete { get; set; }

        [XmlElement("Clear")]
        public string Clear { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Sc3CurrentPipeAddress : SubscriptionGroupBase
    {
        public Sc3CurrentPipeAddress() : base(100, 100, "Sc3CurrentPipeAddress")
        {
            Batch_No = "null";
            Pipe_No = "null";
            Pipe_Quantity = "null";
        }
        [XmlElement("Batch_No")]
        public string Batch_No { get; set; }

        [XmlElement("Pipe_No")]
        public string Pipe_No { get; set; }

        [XmlElement("Pipe_Quantity")]
        public string Pipe_Quantity { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Sc3HistoryPipeAddress : SubscriptionGroupBase
    {
        public Sc3HistoryPipeAddress() : base(30000, 30000, "Sc3HistoryPipeAddress")
        {
            BufferCount = 0;
            Batch_No_1 = "null";
            Pipe_No_1 = "null";
        }

        [XmlElement("BufferCount")]
        public int BufferCount { get; set; }

        [XmlElement("Batch_No_1")]
        public string Batch_No_1 { get; set; }

        [XmlElement("Pipe_No_1")]
        public string Pipe_No_1 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class MustAddress : SubscriptionGroupBase
    {
        public MustAddress() : base(100, 1, "MustAddress")
        {
            Must_Ask = "null";
            Must_Rsp = "null";
        }
        [XmlElement("Must_Ask")]
        public string Must_Ask { get; set; }

        [XmlElement("Must_Rsp")]
        public string Must_Rsp { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class MustPipeAddress : SubscriptionGroupBase
    {
        public MustPipeAddress() : base(1000, 1000, "MustPipeAddress")
        {
            Batch_No = "null";
            Pipe_No = "null";
            Quality_Code = "null";
            Quality_Code2 = "null";
        }
        [XmlElement("Batch_No")]
        public string Batch_No { get; set; }

        [XmlElement("Pipe_No")]
        public string Pipe_No { get; set; }

        [XmlElement("Quality_Code")]
        public string Quality_Code { get; set; }

        [XmlElement("Quality_Code2")]
        public string Quality_Code2 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class PlsAddress : SubscriptionGroupBase
    {
        public PlsAddress() : base(100, 100, "MustAddress")
        {
            Pls_Ask = "null";
            Pls_Rsp = "null";
        }
        [XmlElement("Pls_Ask")]
        public string Pls_Ask { get; set; }

        [XmlElement("Pls_Rsp")]
        public string Pls_Rsp { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class PlsPipeAddress : SubscriptionGroupBase
    {
        public PlsPipeAddress() : base(100, 1, "PlsPipeAddress")
        {
            Batch_No = "null";
            Pipe_No = "null";
            Head_Cut = "null";
            Rear_Cut = "null";
            Pipe_Length = "null";
            Quality_Code = "null";
            Quality_Code2 = "null";
            Scrap = "null";
        }
        [XmlElement("Batch_No")]
        public string Batch_No { get; set; }

        [XmlElement("Pipe_No")]
        public string Pipe_No { get; set; }

        [XmlElement("Head_Cut")]
        public string Head_Cut { get; set; }

        [XmlElement("Rear_Cut")]
        public string Rear_Cut { get; set; }

        [XmlElement("Pipe_Length")]
        public string Pipe_Length { get; set; }

        [XmlElement("Quality_Code")]
        public string Quality_Code { get; set; }

        [XmlElement("Quality_Code2")]
        public string Quality_Code2 { get; set; }

        [XmlElement("Scrap")]
        public string Scrap { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }   

    public class Is1Address : SubscriptionGroupBase
    {
        public Is1Address() : base(100, 100, "Is1Address")
        {
            Is_Request = "null";
            Is_Response = "null";
            Is_Request2 = "null";
            Is_Response2 = "null";
        }
        [XmlElement("Is_Request")]
        public string Is_Request { get; set; }

        [XmlElement("Is_Response")]
        public string Is_Response { get; set; }

        [XmlElement("Is_Request2")]
        public string Is_Request2 { get; set; }

        [XmlElement("Is_Response2")]
        public string Is_Response2 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Is1InputPipeAddress : SubscriptionGroupBase
    {
        public Is1InputPipeAddress() : base(100, 100, "Is1InputPipeAddress")
        {
            Batch_No_1 = "null";
            Pipe_No_1 = "null";
            Pipe_Len_1 = "null";
        }

        [XmlElement("Batch_No_1")]
        public string Batch_No_1 { get; set; }

        [XmlElement("Pipe_No_1")]
        public string Pipe_No_1 { get; set; }

        [XmlElement("Pipe_Len_1")]
        public string Pipe_Len_1 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }


    public class Is2Address : SubscriptionGroupBase
    {
        public Is2Address() : base(100, 100, "Is2Address")
        {
            Is_Request = "null";
            Is_Response = "null";
            Is_Request2 = "null";
            Is_Response2 = "null";
        }
        [XmlElement("Is_Request")]
        public string Is_Request { get; set; }

        [XmlElement("Is_Response")]
        public string Is_Response { get; set; }

        [XmlElement("Is_Request2")]
        public string Is_Request2 { get; set; }

        [XmlElement("Is_Response2")]
        public string Is_Response2 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Is2InputPipeAddress : SubscriptionGroupBase
    {
        public Is2InputPipeAddress() : base(100, 100, "Is2InputPipeAddress")
        {
            Batch_No_1 = "null";
            Pipe_No_1 = "null";
            Pipe_Len_1 = "null";
        }

        [XmlElement("Batch_No_1")]
        public string Batch_No_1 { get; set; }

        [XmlElement("Pipe_No_1")]
        public string Pipe_No_1 { get; set; }

        [XmlElement("Pipe_Len_1")]
        public string Pipe_Len_1 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    //7+U03
    public class Is3Address : SubscriptionGroupBase
    {
        public Is3Address() : base(100, 100, "Is3Address")
        {
            Is_Request = "null";
            Is_Response = "null";
            Is_Request2 = "null";
            Is_Response2 = "null";
        }
        [XmlElement("Is_Request")]
        public string Is_Request { get; set; }

        [XmlElement("Is_Response")]
        public string Is_Response { get; set; }

        [XmlElement("Is_Request2")]
        public string Is_Request2 { get; set; }

        [XmlElement("Is_Response2")]
        public string Is_Response2 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Is3InputPipeAddress : SubscriptionGroupBase
    {
        public Is3InputPipeAddress() : base(100, 100, "Is3InputPipeAddress")
        {
            Batch_No_1 = "null";
            Pipe_No_1 = "null";
            Pipe_Len_1 = "null";
        }

        [XmlElement("Batch_No_1")]
        public string Batch_No_1 { get; set; }

        [XmlElement("Pipe_No_1")]
        public string Pipe_No_1 { get; set; }

        [XmlElement("Pipe_Len_1")]
        public string Pipe_Len_1 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }


    public class PipeEventAddress3 : SubscriptionGroupBase
    {
        public PipeEventAddress3() : base(100, 100, "PipeEventAddress3")
        {
            PipeInfoAsk = "null";
            PipeInfoRsp = "null";
        }
        [XmlElement("PipeInfoAsk")]
        public string PipeInfoAsk { get; set; }

        [XmlElement("PipeInfoRsp")]
        public string PipeInfoRsp { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class PipeEventDataAddress3 : SubscriptionGroupBase
    {
        public PipeEventDataAddress3() : base(100, 100, "PipeEventDataAddress3")
        {
            Batch_No = "null";
            Pipe_No = "null";
        }
        [XmlElement("Batch_No")]
        public string Batch_No { get; set; }

        [XmlElement("Pipe_No")]
        public string Pipe_No { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class PipeDataAddress3 : SubscriptionGroupBase
    {
        public PipeDataAddress3() : base(1000, 1000, "PipeDataAddress3")
        {
            Task_No = "null";
            Is_Spy = "null";
            Strip_Durability = "null";
            Strip_Thk = "null";
            Standard_Code = "null";
            Pipe_Nominal_Lenght = "null";
            Pipe_Max_Length = "null";
            Pipe_Min_Length = "null";
            Pipe_Nominal_Od = "null";
            Pipe_Max_Od = "null";
            Pipe_Min_Od = "null";
            Pipe_Nominal_Thickness = "null";
            Pipe_Min_Thickness = "null";
            Inner_Bead_Isremoving = "null";
            Inner_Bead_Height = "null";
            Inner_Bead_Depth = "null";
            Ovality_Up_Limit = "null";
            Body_Straightness = "null";
            End_Straightness = "null";
            Strip_No = "null";
            Strip_Seq = "null";
            Dtj = "null";
            Length = "null";
            Quality_Code = "null";
            Quality_Code2 = "null";
            SampleReason = "null";
            FLTLength = "null";
            MACLength = "null";
            ADDLength = "null";
            HeadCut = "null";
            TailCut = "null";
        }
        [XmlElement("Task_No")]
        public string Task_No { get; set; }

        [XmlElement("Is_Spy")]
        public string Is_Spy { get; set; }

        [XmlElement("Strip_Durability")]
        public string Strip_Durability { get; set; }

        [XmlElement("Strip_Thk")]
        public string Strip_Thk { get; set; }

        [XmlElement("Standard_Code")]
        public string Standard_Code { get; set; }

        [XmlElement("Pipe_Nominal_Lenght")]
        public string Pipe_Nominal_Lenght { get; set; }

        [XmlElement("Pipe_Max_Length")]
        public string Pipe_Max_Length { get; set; }

        [XmlElement("Pipe_Min_Length")]
        public string Pipe_Min_Length { get; set; }

        [XmlElement("Pipe_Nominal_Od")]
        public string Pipe_Nominal_Od { get; set; }

        [XmlElement("Pipe_Max_Od")]
        public string Pipe_Max_Od { get; set; }

        [XmlElement("Pipe_Min_Od")]
        public string Pipe_Min_Od { get; set; }

        [XmlElement("Pipe_Nominal_Thickness")]
        public string Pipe_Nominal_Thickness { get; set; }

        [XmlElement("Pipe_Min_Thickness")]
        public string Pipe_Min_Thickness { get; set; }

        [XmlElement("Inner_Bead_Isremoving")]
        public string Inner_Bead_Isremoving { get; set; }

        [XmlElement("Inner_Bead_Height")]
        public string Inner_Bead_Height { get; set; }

        [XmlElement("Inner_Bead_Depth")]
        public string Inner_Bead_Depth { get; set; }

        [XmlElement("Ovality_Up_Limit")]
        public string Ovality_Up_Limit { get; set; }

        [XmlElement("Body_Straightness")]
        public string Body_Straightness { get; set; }

        [XmlElement("End_Straightness")]
        public string End_Straightness { get; set; }

        [XmlElement("Strip_No")]
        public string Strip_No { get; set; }

        [XmlElement("Strip_Seq")]
        public string Strip_Seq { get; set; }

        [XmlElement("Dtj")]
        public string Dtj { get; set; }

        [XmlElement("Length")]
        public string Length { get; set; }

        [XmlElement("Quality_Code")]
        public string Quality_Code { get; set; }

        [XmlElement("Quality_Code2")]
        public string Quality_Code2 { get; set; }

        [XmlElement("SampleReason")]
        public string SampleReason { get; set; }

        [XmlElement("FLTLength")]
        public string FLTLength { get; set; }

        [XmlElement("MACLength")]
        public string MACLength { get; set; }

        [XmlElement("ADDLength")]
        public string ADDLength { get; set; }

        [XmlElement("HeadCut")]
        public string HeadCut { get; set; }

        [XmlElement("TailCut")]
        public string TailCut { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Bc4Address : SubscriptionGroupBase
	{
		public Bc4Address() : base(100, 100, "Bc4Address")
		{
			Print_Request = "null";
			Print_Finished = "null";
			Bundle_Complete = "null";
			Clear = "null";

		}
		[XmlElement("Print_Request")]
		public string Print_Request { get; set; }

		[XmlElement("Print_Finished")]
		public string Print_Finished { get; set; }

		[XmlElement("Bundle_Complete")]
		public string Bundle_Complete { get; set; }

		[XmlElement("Clear")]
		public string Clear { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

	public class Bc4CurrentPipeAddress : SubscriptionGroupBase
	{
		public Bc4CurrentPipeAddress() : base(100, 100, "Bc5CurrentPipeAddress")
		{
			Batch_No = "null";
			Pipe_No = "null";
			Pipe_Quantity = "null";
		}
		[XmlElement("Batch_No")]
		public string Batch_No { get; set; }

		[XmlElement("Pipe_No")]
		public string Pipe_No { get; set; }

		[XmlElement("Pipe_Quantity")]
		public string Pipe_Quantity { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

    public class Bc4HistoryPipeAddress : SubscriptionGroupBase
    {
        public Bc4HistoryPipeAddress() : base(30000, 30000, "Bc4HistoryPipeAddress")
        {
            BufferCount = 0;
            Batch_No_1 = "null";
            Pipe_No_1 = "null";
        }

        [XmlElement("BufferCount")]
        public int BufferCount { get; set; }

        [XmlElement("Batch_No_1")]
        public string Batch_No_1 { get; set; }

        [XmlElement("Pipe_No_1")]
        public string Pipe_No_1 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Bc5Address : SubscriptionGroupBase
	{
		public Bc5Address() : base(100, 100, "Bc5Address")
		{
			Print_Request = "null";
			Print_Finished = "null";
			Bundle_Complete = "null";
			Clear = "null";
		}
		[XmlElement("Print_Request")]
		public string Print_Request { get; set; }

		[XmlElement("Print_Finished")]
		public string Print_Finished { get; set; }

		[XmlElement("Bundle_Complete")]
		public string Bundle_Complete { get; set; }

		[XmlElement("Clear")]
		public string Clear { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

	public class Bc5CurrentPipeAddress : SubscriptionGroupBase
	{
		public Bc5CurrentPipeAddress() : base(100, 100, "Bc5CurrentPipeAddress")
		{
			Batch_No = "null";
			Pipe_No = "null";
			Pipe_Quantity = "null";
		}
		[XmlElement("Batch_No")]
		public string Batch_No { get; set; }

		[XmlElement("Pipe_No")]
		public string Pipe_No { get; set; }

		[XmlElement("Pipe_Quantity")]
		public string Pipe_Quantity { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

    public class Bc5HistoryPipeAddress : SubscriptionGroupBase
    {
        public Bc5HistoryPipeAddress() : base(30000, 30000, "Bc5HistoryPipeAddress")
        {
            BufferCount = 0;
            Batch_No_1 = "null";
            Pipe_No_1 = "null";
        }

        [XmlElement("BufferCount")]
        public int BufferCount { get; set; }

        [XmlElement("Batch_No_1")]
        public string Batch_No_1 { get; set; }

        [XmlElement("Pipe_No_1")]
        public string Pipe_No_1 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Sc4Address : SubscriptionGroupBase
	{
		public Sc4Address() : base(100, 100, "Sc4Address")
		{
			Print_Request = "null";
			Print_Finished = "null";
			Bundle_Complete = "null";
			Clear = "null";
		}
		[XmlElement("Print_Request")]
		public string Print_Request { get; set; }

		[XmlElement("Print_Finished")]
		public string Print_Finished { get; set; }

		[XmlElement("Bundle_Complete")]
		public string Bundle_Complete { get; set; }

		[XmlElement("Clear")]
		public string Clear { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

	public class Sc4CurrentPipeAddress : SubscriptionGroupBase
	{
		public Sc4CurrentPipeAddress() : base(100, 100, "Sc4CurrentPipeAddress")
		{
			Batch_No = "null";
			Pipe_No = "null";
			Pipe_Quantity = "null";
		}
		[XmlElement("Batch_No")]
		public string Batch_No { get; set; }

		[XmlElement("Pipe_No")]
		public string Pipe_No { get; set; }

		[XmlElement("Pipe_Quantity")]
		public string Pipe_Quantity { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

    public class Sc4HistoryPipeAddress : SubscriptionGroupBase
    {
        public Sc4HistoryPipeAddress() : base(30000, 30000, "Sc4HistoryPipeAddress")
        {
            BufferCount = 0;
            Batch_No_1 = "null";
            Pipe_No_1 = "null";
        }

        [XmlElement("BufferCount")]
        public int BufferCount { get; set; }

        [XmlElement("Batch_No_1")]
        public string Batch_No_1 { get; set; }

        [XmlElement("Pipe_No_1")]
        public string Pipe_No_1 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Sc5Address : SubscriptionGroupBase
	{
		public Sc5Address() : base(100, 100, "Sc5Address")
		{
			Print_Request = "null";
			Print_Finished = "null";
			Bundle_Complete = "null";
			Clear = "null";
		}
		[XmlElement("Print_Request")]
		public string Print_Request { get; set; }

		[XmlElement("Print_Finished")]
		public string Print_Finished { get; set; }

		[XmlElement("Bundle_Complete")]
		public string Bundle_Complete { get; set; }

		[XmlElement("Clear")]
		public string Clear { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

	public class Sc5CurrentPipeAddress : SubscriptionGroupBase
	{
		public Sc5CurrentPipeAddress() : base(100, 100, "Sc5CurrentPipeAddress")
		{
			Batch_No = "null";
			Pipe_No = "null";
			Pipe_Quantity = "null";
		}
		[XmlElement("Batch_No")]
		public string Batch_No { get; set; }

		[XmlElement("Pipe_No")]
		public string Pipe_No { get; set; }

		[XmlElement("Pipe_Quantity")]
		public string Pipe_Quantity { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

    public class Sc5HistoryPipeAddress : SubscriptionGroupBase
    {
        public Sc5HistoryPipeAddress() : base(30000, 30000, "Sc5HistoryPipeAddress")
        {
            BufferCount = 0;
            Batch_No_1 = "null";
            Pipe_No_1 = "null";
        }

        [XmlElement("BufferCount")]
        public int BufferCount { get; set; }

        [XmlElement("Batch_No_1")]
        public string Batch_No_1 { get; set; }

        [XmlElement("Pipe_No_1")]
        public string Pipe_No_1 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class OS1Address : SubscriptionGroupBase
	{
		public OS1Address() : base(100, 100, "OS1Address")
		{
			Print_Request = "null";
			Print_Finished = "null";
			Bundle_Complete = "null";
			Clear = "null";
		}
		[XmlElement("Print_Request")]
		public string Print_Request { get; set; }

		[XmlElement("Print_Finished")]
		public string Print_Finished { get; set; }

		[XmlElement("Bundle_Complete")]
		public string Bundle_Complete { get; set; }

		[XmlElement("Clear")]
		public string Clear { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

	public class OS1CurrentPipeAddress : SubscriptionGroupBase
	{
		public OS1CurrentPipeAddress() : base(100, 100, "OS1CurrentPipeAddress")
		{
			Batch_No = "null";
			Pipe_No = "null";
			Pipe_Quantity = "null";
		}
		[XmlElement("Batch_No")]
		public string Batch_No { get; set; }

		[XmlElement("Pipe_No")]
		public string Pipe_No { get; set; }

		[XmlElement("Pipe_Quantity")]
		public string Pipe_Quantity { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

    public class OS1HistoryPipeAddress : SubscriptionGroupBase
    {
        public OS1HistoryPipeAddress() : base(30000, 30000, "OS1HistoryPipeAddress")
        {
            BufferCount = 0;
            Batch_No_1 = "null";
            Pipe_No_1 = "null";
        }

        [XmlElement("BufferCount")]
        public int BufferCount { get; set; }

        [XmlElement("Batch_No_1")]
        public string Batch_No_1 { get; set; }

        [XmlElement("Pipe_No_1")]
        public string Pipe_No_1 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class OS2Address : SubscriptionGroupBase
    {
        public OS2Address() : base(100, 100, "OS2Address")
        {
            Print_Request = "null";
            Print_Finished = "null";
            Bundle_Complete = "null";
            Clear = "null";
        }
        [XmlElement("Print_Request")]
        public string Print_Request { get; set; }

        [XmlElement("Print_Finished")]
        public string Print_Finished { get; set; }

        [XmlElement("Bundle_Complete")]
        public string Bundle_Complete { get; set; }

        [XmlElement("Clear")]
        public string Clear { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class OS2CurrentPipeAddress : SubscriptionGroupBase
    {
        public OS2CurrentPipeAddress() : base(100, 100, "OS2CurrentPipeAddress")
        {
            Batch_No = "null";
            Pipe_No = "null";
            Pipe_Quantity = "null";
        }
        [XmlElement("Batch_No")]
        public string Batch_No { get; set; }

        [XmlElement("Pipe_No")]
        public string Pipe_No { get; set; }

        [XmlElement("Pipe_Quantity")]
        public string Pipe_Quantity { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class OS2HistoryPipeAddress : SubscriptionGroupBase
    {
        public OS2HistoryPipeAddress() : base(30000, 30000, "OS2HistoryPipeAddress")
        {
            BufferCount = 0;
            Batch_No_1 = "null";
            Pipe_No_1 = "null";
        }

        [XmlElement("BufferCount")]
        public int BufferCount { get; set; }

        [XmlElement("Batch_No_1")]
        public string Batch_No_1 { get; set; }

        [XmlElement("Pipe_No_1")]
        public string Pipe_No_1 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class VS1Address : SubscriptionGroupBase
    {
        public VS1Address() : base(100, 1, "VS1Address")
        {
            VisionAsk = "null";
            VisionRsp = "null";

        }
        [XmlElement("VisionAsk")]
        public string VisionAsk { get; set; }

        [XmlElement("VisionRsp")]
        public string VisionRsp { get; set; }


        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class VS1PipeAddress : SubscriptionGroupBase
    {
        public VS1PipeAddress() : base(1000, 1000, "VS1PipeAddress")
        {
            Batch_No = "null";
            Pipe_No = "null";
            Quality_Code = "null";
        }
        [XmlElement("Batch_No")]
        public string Batch_No { get; set; }

        [XmlElement("Pipe_No")]
        public string Pipe_No { get; set; }

        [XmlElement("Quality_Code")]
        public string Quality_Code { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class VS2Address : SubscriptionGroupBase
    {
        public VS2Address() : base(100, 1, "VS2Address")
        {
            VisionAsk = "null";
            VisionRsp = "null";

        }
        [XmlElement("VisionAsk")]
        public string VisionAsk { get; set; }

        [XmlElement("VisionRsp")]
        public string VisionRsp { get; set; }


        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class VS2PipeAddress : SubscriptionGroupBase
    {
        public VS2PipeAddress() : base(1000, 1000, "VS2PipeAddress")
        {
            Batch_No = "null";
            Pipe_No = "null";
            Quality_Code = "null";
        }
        [XmlElement("Batch_No")]
        public string Batch_No { get; set; }

        [XmlElement("Pipe_No")]
        public string Pipe_No { get; set; }

        [XmlElement("Quality_Code")]
        public string Quality_Code { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class FltAddress : SubscriptionGroupBase
    {
        public FltAddress() : base(100, 100, "FltAddress")
        {
            FltAsk = "null";
            FltRsp = "null";
        }
        [XmlElement("FltAsk")]
        public string FltAsk { get; set; }

        [XmlElement("FltRsp")]
        public string FltRsp { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class FltResultAddress : SubscriptionGroupBase
    {
        public FltResultAddress() : base(1000, 1000, "FltResultAddress")
        {
            Batch_No = "null";
            Pipe_No = "null";
            Sample_Type = "null";
            Sample_Seq = "null";
            Sample_Result = "null";
            Flt_Gap = "null";
            Flt_Time = "null";
            Flt_Spd = "null";
        }
        [XmlElement("Batch_No")]
        public string Batch_No { get; set; }

        [XmlElement("Pipe_No")]
        public string Pipe_No { get; set; }

        [XmlElement("Sample_Type")]
        public string Sample_Type { get; set; }

        [XmlElement("Sample_Seq")]
        public string Sample_Seq { get; set; }

        [XmlElement("Sample_Result")]
        public string Sample_Result { get; set; }

        [XmlElement("Flt_Gap")]
        public string Flt_Gap { get; set; }

        [XmlElement("Flt_Time")]
        public string Flt_Time { get; set; }

        [XmlElement("Flt_Spd")]
        public string Flt_Spd { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class SampleAddress : SubscriptionGroupBase
    {
        public SampleAddress() : base(100, 1, "SampleAddress")
        {
            SampleAsk = "null";
            SampleRsp = "null";
            SamplePrintAsk = "null";
            SamplePrintRsp = "null";

        }
        [XmlElement("SampleAsk")]
        public string SampleAsk { get; set; }

        [XmlElement("SampleRsp")]
        public string SampleRsp { get; set; }

        [XmlElement("SamplePrintAsk")]
        public string SamplePrintAsk { get; set; }

        [XmlElement("SamplePrintRsp")]
        public string SamplePrintRsp { get; set; }


        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class SampleResultAddress : SubscriptionGroupBase
    {
        public SampleResultAddress() : base(1000, 1000, "SampleResultAddress")
        {
            Batch_No = "null";
            Pipe_No = "null";
            Sample_Type = "null";
            Sample_Seq = "null";
            Sample_Reason = "null";
            Sample_Length = "null";
        }
        [XmlElement("Batch_No")]
        public string Batch_No { get; set; }

        [XmlElement("Pipe_No")]
        public string Pipe_No { get; set; }

        [XmlElement("Sample_Type")]
        public string Sample_Type { get; set; }

        [XmlElement("Sample_Seq")]
        public string Sample_Seq { get; set; }

        [XmlElement("Sample_Reason")]
        public string Sample_Reason { get; set; }

        [XmlElement("Sample_Length")]
        public string Sample_Length { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class SMPBladeAddress : SubscriptionGroupBase
    {
        public SMPBladeAddress() : base(100, 100, "SMPBladeAddress")
        {
            BladeUpdate_1 = "null";
            BladeRsp_1 = "null";
            BladeUpdate_2 = "null";
            BladeRsp_2 = "null";
        }
        [XmlElement("BladeUpdate_1")]
        public string BladeUpdate_1 { get; set; }

        [XmlElement("BladeRsp_1")]
        public string BladeRsp_1 { get; set; }

        [XmlElement("BladeUpdate_2")]
        public string BladeUpdate_2 { get; set; }

        [XmlElement("BladeRsp_2")]
        public string BladeRsp_2 { get; set; }


        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class SMPBladeInfoAddress : SubscriptionGroupBase
    {
        public SMPBladeInfoAddress() : base(1000, 1000, "SMPBladeInfoAddress")
        {
            Bld1_SNr = "null";
            Bld1_OD = "null";
            Bld1_WT = "null";
            Bld1_TNr = "null";
            Bld1_CutArea = "null";
            Bld2_SNr = "null";
            Bld2_OD = "null";
            Bld2_WT = "null";
            Bld2_TNr = "null";
            Bld2_CutArea = "null";
        }
        [XmlElement("Bld1_SNr")]
        public string Bld1_SNr { get; set; }

        [XmlElement("Bld1_OD")]
        public string Bld1_OD { get; set; }

        [XmlElement("Bld1_WT")]
        public string Bld1_WT { get; set; }

        [XmlElement("Bld1_TNr")]
        public string Bld1_TNr { get; set; }

        [XmlElement("Bld1_CutArea")]
        public string Bld1_CutArea { get; set; }

        [XmlElement("Bld2_SNr")]
        public string Bld2_SNr { get; set; }

        [XmlElement("Bld2_OD")]
        public string Bld2_OD { get; set; }

        [XmlElement("Bld2_WT")]
        public string Bld2_WT { get; set; }

        [XmlElement("Bld2_TNr")]
        public string Bld2_TNr { get; set; }

        [XmlElement("Bld2_CutArea")]
        public string Bld2_CutArea { get; set; }



        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class QCAddress : SubscriptionGroupBase
	{
		public QCAddress() : base(100, 100, "QCAddress")
		{
            QC_Request = "null";
            QC_Response = "null";
		}
		[XmlElement("QC_Request")]
		public string QC_Request { get; set; }

		[XmlElement("QC_Response")]
		public string QC_Response { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

	public class QCCurrentPipeAddress : SubscriptionGroupBase
	{
		public QCCurrentPipeAddress() : base(100, 100, "QCCurrentPipeAddress")
		{
			Batch_No = "null";
			Pipe_No = "null";
			Pipe_Quantity = "null";
		}
		[XmlElement("Batch_No")]
		public string Batch_No { get; set; }

		[XmlElement("Pipe_No")]
		public string Pipe_No { get; set; }

		[XmlElement("Pipe_Quantity")]
		public string Pipe_Quantity { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

    public class MillConfig
    {
        public MillConfig()
        {
            //HfwPosition = "0";
            //Lht1Position = "0";
            //Lht2Position = "0";
            //Lht3Position = "0";
            //Lht4Position = "0";
            //SustPosition = "0";
            //SqPosition = "0";

            HfwPosition = 0;
            Lht1Position = 0;
            Lht2Position = 0;
            Lht3Position = 0;
            Lht4Position = 0;
            SustPosition = 0;
            SqPosition = 0;


        }
        [XmlElement("HfwPosition")]
        public int HfwPosition { get; set; }

        [XmlElement("SqPosition")]
        public int SqPosition { get; set; }

        [XmlElement("Lht1Position")]
        public int Lht1Position { get; set; }

        [XmlElement("Lht2Position")]
        public int Lht2Position { get; set; }

        [XmlElement("Lht3Position")]
        public int Lht3Position { get; set; }

        [XmlElement("Lht4Position")]
        public int Lht4Position { get; set; }

        [XmlElement("SustPosition")]
        public int SustPosition { get; set; }

        public List<string> GetMachineList()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 1)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length; i++)
            {
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public List<int> GetPositionList()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 1)
                throw new NotImplementedException("Porperties count error!");
            List<int> n = new List<int>();
            for (int i = 0; i < properties.Length; i++)
            {
                n.Add(int.Parse(properties[i].GetValue(this).ToString()));
            }
            return n;
        }

    }

    //NOT USED
    public class VisPipeAddress : SubscriptionGroupBase
	{
		public VisPipeAddress() : base(100, 1, "VisPipeAddress")
		{
			Batch_No = "null";
			Pipe_No = "null";			
			Quality_Code = "null";
		}
		[XmlElement("Batch_No")]
		public string Batch_No { get; set; }

		[XmlElement("Pipe_No")]
		public string Pipe_No { get; set; }		

		[XmlElement("Quality_Code")]
		public string Quality_Code { get; set; }

		public override List<string> GetNodeAddress()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
				n.Add(properties[i].GetValue(this).ToString());
			}
			return n;
		}

		public override List<string> GetNodeDisplayName()
		{
			PropertyInfo[] properties = GetType().GetProperties();
			if (properties.Length < 4)
				throw new NotImplementedException("Porperties count error!");
			//(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
			int count = properties.Length - 3;
			List<string> n = new List<string>();
			for (int i = 0; i < properties.Length - 3; i++)
			{
				//interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
				n.Add(properties[i].Name);
			}
			return n;
		}
	}

    public class MillLineProcessDataAddress : SubscriptionGroupBase
    {
        public MillLineProcessDataAddress() : base(10000, 1, "MillLineProcessDataAddress")
        {
            Speed = "null";
            Qt = "null";
            Hfw_Vee_Length = "null";
            Ja_Panel_Cooling = "null";
            Ja_Inductor_Cooling = "null";
            Hfw_Panel_Cooling = "null";
            Lht_Panel_Cooling = "null";
            Lht_Inductor_Cooling = "null";
            Strip_1 = "null";
            Strip_2 = "null";
            Strip_3 = "null";
        }
        [XmlElement("Speed")]
        public string Speed { get; set; }

        [XmlElement("Qt")]
        public string Qt { get; set; }

        [XmlElement("Hfw_Vee_Length")]
        public string Hfw_Vee_Length { get; set; }

        [XmlElement("Ja_Panel_Cooling")]
        public string Ja_Panel_Cooling { get; set; }

        [XmlElement("Ja_Inductor_Cooling")]
        public string Ja_Inductor_Cooling { get; set; }

        [XmlElement("Hfw_Panel_Cooling")]
        public string Hfw_Panel_Cooling { get; set; }

        [XmlElement("Lht_Panel_Cooling")]
        public string Lht_Panel_Cooling { get; set; }

        [XmlElement("Lht_Inductor_Cooling")]
        public string Lht_Inductor_Cooling { get; set; }

        [XmlElement("Strip_1")]
        public string Strip_1 { get; set; }

        [XmlElement("Strip_2")]
        public string Strip_2 { get; set; }

        [XmlElement("Strip_3")]
        public string Strip_3 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class MillLineDtjAddress : SubscriptionGroupBase
    {
        public MillLineDtjAddress() : base(100, 1, "MillLineDtjAddress")
        {
            Dtj_1_1 = "null";
            Dtj_2_1 = "null";
            Dtj_3_1 = "null";
            Dtj_1_2 = "null";
            Dtj_2_2 = "null";
            Dtj_3_2 = "null";
            Dtj_1_3 = "null";
            Dtj_2_3 = "null";
            Dtj_3_3 = "null";
            Dtj_1_4 = "null";
            Dtj_2_4 = "null";
            Dtj_3_4 = "null";
        }
        [XmlElement("Dtj_1_1")]
        public string Dtj_1_1 { get; set; }

        [XmlElement("Dtj_2_1")]
        public string Dtj_2_1 { get; set; }

        [XmlElement("Dtj_3_1")]
        public string Dtj_3_1 { get; set; }

        [XmlElement("Dtj_1_2")]
        public string Dtj_1_2 { get; set; }

        [XmlElement("Dtj_2_2")]
        public string Dtj_2_2 { get; set; }

        [XmlElement("Dtj_3_2")]
        public string Dtj_3_2 { get; set; }

        [XmlElement("Dtj_1_3")]
        public string Dtj_1_3 { get; set; }

        [XmlElement("Dtj_2_3")]
        public string Dtj_2_3 { get; set; }

        [XmlElement("Dtj_3_3")]
        public string Dtj_3_3 { get; set; }

        [XmlElement("Dtj_1_4")]
        public string Dtj_1_4 { get; set; }

        [XmlElement("Dtj_2_4")]
        public string Dtj_2_4 { get; set; }

        [XmlElement("Dtj_3_4")]
        public string Dtj_3_4 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class HfwProcessDataAddress : SubscriptionGroupBase
    {
        public HfwProcessDataAddress() : base(100, 1, "HfwProcessDataAddress")
        {
            Power_1 = "null";
            Freq_1 = "null";
            Temp_1 = "null";
            Curt_1 = "null";
            Volt_1 = "null";
            Power_2 = "null";
            Freq_2 = "null";
            Temp_2 = "null";
            Curt_2 = "null";
            Volt_2 = "null";
            Power_3 = "null";
            Freq_3 = "null";
            Temp_3 = "null";
            Curt_3 = "null";
            Volt_3 = "null";
            Power_4 = "null";
            Freq_4 = "null";
            Temp_4 = "null";
            Curt_4 = "null";
            Volt_4 = "null";
        }
        [XmlElement("Power_1")]
        public string Power_1 { get; set; }

        [XmlElement("Freq_1")]
        public string Freq_1 { get; set; }

        [XmlElement("Temp_1")]
        public string Temp_1 { get; set; }

        [XmlElement("Curt_1")]
        public string Curt_1 { get; set; }

        [XmlElement("Volt_1")]
        public string Volt_1 { get; set; }

        [XmlElement("Power_2")]
        public string Power_2 { get; set; }

        [XmlElement("Freq_2")]
        public string Freq_2 { get; set; }

        [XmlElement("Temp_2")]
        public string Temp_2 { get; set; }

        [XmlElement("Curt_2")]
        public string Curt_2 { get; set; }

        [XmlElement("Volt_2")]
        public string Volt_2 { get; set; }

        [XmlElement("Power_3")]
        public string Power_3 { get; set; }

        [XmlElement("Freq_3")]
        public string Freq_3 { get; set; }

        [XmlElement("Temp_3")]
        public string Temp_3 { get; set; }

        [XmlElement("Curt_3")]
        public string Curt_3 { get; set; }

        [XmlElement("Volt_3")]
        public string Volt_3 { get; set; }

        [XmlElement("Power_4")]
        public string Power_4 { get; set; }

        [XmlElement("Freq_4")]
        public string Freq_4 { get; set; }

        [XmlElement("Temp_4")]
        public string Temp_4 { get; set; }

        [XmlElement("Curt_4")]
        public string Curt_4 { get; set; }

        [XmlElement("Volt_4")]
        public string Volt_4 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Lht1ProcessDataAddress : SubscriptionGroupBase
    {
        public Lht1ProcessDataAddress() : base(100, 1, "Lht1ProcessDataAddress")
        {
            Power_1 = "null";
            Freq_1 = "null";
            Temp_1 = "null";
            Curt_1 = "null";
            Volt_1 = "null";
            Power_2 = "null";
            Freq_2 = "null";
            Temp_2 = "null";
            Curt_2 = "null";
            Volt_2 = "null";
            Power_3 = "null";
            Freq_3 = "null";
            Temp_3 = "null";
            Curt_3 = "null";
            Volt_3 = "null";
            Power_4 = "null";
            Freq_4 = "null";
            Temp_4 = "null";
            Curt_4 = "null";
            Volt_4 = "null";
        }
        [XmlElement("Power_1")]
        public string Power_1 { get; set; }

        [XmlElement("Freq_1")]
        public string Freq_1 { get; set; }

        [XmlElement("Temp_1")]
        public string Temp_1 { get; set; }

        [XmlElement("Curt_1")]
        public string Curt_1 { get; set; }

        [XmlElement("Volt_1")]
        public string Volt_1 { get; set; }

        [XmlElement("Power_2")]
        public string Power_2 { get; set; }

        [XmlElement("Freq_2")]
        public string Freq_2 { get; set; }

        [XmlElement("Temp_2")]
        public string Temp_2 { get; set; }

        [XmlElement("Curt_2")]
        public string Curt_2 { get; set; }

        [XmlElement("Volt_2")]
        public string Volt_2 { get; set; }

        [XmlElement("Power_3")]
        public string Power_3 { get; set; }

        [XmlElement("Freq_3")]
        public string Freq_3 { get; set; }

        [XmlElement("Temp_3")]
        public string Temp_3 { get; set; }

        [XmlElement("Curt_3")]
        public string Curt_3 { get; set; }

        [XmlElement("Volt_3")]
        public string Volt_3 { get; set; }

        [XmlElement("Power_4")]
        public string Power_4 { get; set; }

        [XmlElement("Freq_4")]
        public string Freq_4 { get; set; }

        [XmlElement("Temp_4")]
        public string Temp_4 { get; set; }

        [XmlElement("Curt_4")]
        public string Curt_4 { get; set; }

        [XmlElement("Volt_4")]
        public string Volt_4 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Lht2ProcessDataAddress : SubscriptionGroupBase
    {
        public Lht2ProcessDataAddress() : base(100, 1, "Lht2ProcessDataAddress")
        {
            Power_1 = "null";
            Freq_1 = "null";
            Temp_1 = "null";
            Curt_1 = "null";
            Volt_1 = "null";
            Power_2 = "null";
            Freq_2 = "null";
            Temp_2 = "null";
            Curt_2 = "null";
            Volt_2 = "null";
            Power_3 = "null";
            Freq_3 = "null";
            Temp_3 = "null";
            Curt_3 = "null";
            Volt_3 = "null";
            Power_4 = "null";
            Freq_4 = "null";
            Temp_4 = "null";
            Curt_4 = "null";
            Volt_4 = "null";
        }
        [XmlElement("Power_1")]
        public string Power_1 { get; set; }

        [XmlElement("Freq_1")]
        public string Freq_1 { get; set; }

        [XmlElement("Temp_1")]
        public string Temp_1 { get; set; }

        [XmlElement("Curt_1")]
        public string Curt_1 { get; set; }

        [XmlElement("Volt_1")]
        public string Volt_1 { get; set; }

        [XmlElement("Power_2")]
        public string Power_2 { get; set; }

        [XmlElement("Freq_2")]
        public string Freq_2 { get; set; }

        [XmlElement("Temp_2")]
        public string Temp_2 { get; set; }

        [XmlElement("Curt_2")]
        public string Curt_2 { get; set; }

        [XmlElement("Volt_2")]
        public string Volt_2 { get; set; }

        [XmlElement("Power_3")]
        public string Power_3 { get; set; }

        [XmlElement("Freq_3")]
        public string Freq_3 { get; set; }

        [XmlElement("Temp_3")]
        public string Temp_3 { get; set; }

        [XmlElement("Curt_3")]
        public string Curt_3 { get; set; }

        [XmlElement("Volt_3")]
        public string Volt_3 { get; set; }

        [XmlElement("Power_4")]
        public string Power_4 { get; set; }

        [XmlElement("Freq_4")]
        public string Freq_4 { get; set; }

        [XmlElement("Temp_4")]
        public string Temp_4 { get; set; }

        [XmlElement("Curt_4")]
        public string Curt_4 { get; set; }

        [XmlElement("Volt_4")]
        public string Volt_4 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Lht3ProcessDataAddress : SubscriptionGroupBase
    {
        public Lht3ProcessDataAddress() : base(100, 1, "Lht3ProcessDataAddress")
        {
            Power_1 = "null";
            Freq_1 = "null";
            Temp_1 = "null";
            Curt_1 = "null";
            Volt_1 = "null";
            Power_2 = "null";
            Freq_2 = "null";
            Temp_2 = "null";
            Curt_2 = "null";
            Volt_2 = "null";
            Power_3 = "null";
            Freq_3 = "null";
            Temp_3 = "null";
            Curt_3 = "null";
            Volt_3 = "null";
            Power_4 = "null";
            Freq_4 = "null";
            Temp_4 = "null";
            Curt_4 = "null";
            Volt_4 = "null";
        }
        [XmlElement("Power_1")]
        public string Power_1 { get; set; }

        [XmlElement("Freq_1")]
        public string Freq_1 { get; set; }

        [XmlElement("Temp_1")]
        public string Temp_1 { get; set; }

        [XmlElement("Curt_1")]
        public string Curt_1 { get; set; }

        [XmlElement("Volt_1")]
        public string Volt_1 { get; set; }

        [XmlElement("Power_2")]
        public string Power_2 { get; set; }

        [XmlElement("Freq_2")]
        public string Freq_2 { get; set; }

        [XmlElement("Temp_2")]
        public string Temp_2 { get; set; }

        [XmlElement("Curt_2")]
        public string Curt_2 { get; set; }

        [XmlElement("Volt_2")]
        public string Volt_2 { get; set; }

        [XmlElement("Power_3")]
        public string Power_3 { get; set; }

        [XmlElement("Freq_3")]
        public string Freq_3 { get; set; }

        [XmlElement("Temp_3")]
        public string Temp_3 { get; set; }

        [XmlElement("Curt_3")]
        public string Curt_3 { get; set; }

        [XmlElement("Volt_3")]
        public string Volt_3 { get; set; }

        [XmlElement("Power_4")]
        public string Power_4 { get; set; }

        [XmlElement("Freq_4")]
        public string Freq_4 { get; set; }

        [XmlElement("Temp_4")]
        public string Temp_4 { get; set; }

        [XmlElement("Curt_4")]
        public string Curt_4 { get; set; }

        [XmlElement("Volt_4")]
        public string Volt_4 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class Lht4ProcessDataAddress : SubscriptionGroupBase
    {
        public Lht4ProcessDataAddress() : base(100, 1, "Lht4ProcessDataAddress")
        {
            Power_1 = "null";
            Freq_1 = "null";
            Temp_1 = "null";
            Curt_1 = "null";
            Volt_1 = "null";
            Power_2 = "null";
            Freq_2 = "null";
            Temp_2 = "null";
            Curt_2 = "null";
            Volt_2 = "null";
            Power_3 = "null";
            Freq_3 = "null";
            Temp_3 = "null";
            Curt_3 = "null";
            Volt_3 = "null";
            Power_4 = "null";
            Freq_4 = "null";
            Temp_4 = "null";
            Curt_4 = "null";
            Volt_4 = "null";
        }
        [XmlElement("Power_1")]
        public string Power_1 { get; set; }

        [XmlElement("Freq_1")]
        public string Freq_1 { get; set; }

        [XmlElement("Temp_1")]
        public string Temp_1 { get; set; }

        [XmlElement("Curt_1")]
        public string Curt_1 { get; set; }

        [XmlElement("Volt_1")]
        public string Volt_1 { get; set; }

        [XmlElement("Power_2")]
        public string Power_2 { get; set; }

        [XmlElement("Freq_2")]
        public string Freq_2 { get; set; }

        [XmlElement("Temp_2")]
        public string Temp_2 { get; set; }

        [XmlElement("Curt_2")]
        public string Curt_2 { get; set; }

        [XmlElement("Volt_2")]
        public string Volt_2 { get; set; }

        [XmlElement("Power_3")]
        public string Power_3 { get; set; }

        [XmlElement("Freq_3")]
        public string Freq_3 { get; set; }

        [XmlElement("Temp_3")]
        public string Temp_3 { get; set; }

        [XmlElement("Curt_3")]
        public string Curt_3 { get; set; }

        [XmlElement("Volt_3")]
        public string Volt_3 { get; set; }

        [XmlElement("Power_4")]
        public string Power_4 { get; set; }

        [XmlElement("Freq_4")]
        public string Freq_4 { get; set; }

        [XmlElement("Temp_4")]
        public string Temp_4 { get; set; }

        [XmlElement("Curt_4")]
        public string Curt_4 { get; set; }

        [XmlElement("Volt_4")]
        public string Volt_4 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class SustProcessDataAddress : SubscriptionGroupBase
    {
        public SustProcessDataAddress() : base(100, 1, "SustProcessDataAddress")
        {
            Qc_1 = "null";
            Qc_2 = "null";
            Qc_3 = "null";
            Qc_4 = "null";
        }
        [XmlElement("Qc_1")]
        public string Qc_1 { get; set; }

        [XmlElement("Qc_2")]
        public string Qc_2 { get; set; }

        [XmlElement("Qc_3")]
        public string Qc_3 { get; set; }

        [XmlElement("Qc_4")]
        public string Qc_4 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }

    public class SqProcessDataAddress : SubscriptionGroupBase
    {
        public SqProcessDataAddress() : base(100, 1, "SqProcessDataAddress")
        {
            Sq_1_1 = "null";
            Sq_2_1 = "null";
            Sq_3_1 = "null";
            Sq_4_1 = "null";
            Sq_1_2 = "null";
            Sq_2_2 = "null";
            Sq_3_2 = "null";
            Sq_4_2 = "null";
            Sq_1_3 = "null";
            Sq_2_3 = "null";
            Sq_3_3 = "null";
            Sq_4_3 = "null";
            Sq_1_4 = "null";
            Sq_2_4 = "null";
            Sq_3_4 = "null";
            Sq_4_4 = "null";
        }
        [XmlElement("Sq_1_1")]
        public string Sq_1_1 { get; set; }

        [XmlElement("Sq_2_1")]
        public string Sq_2_1 { get; set; }

        [XmlElement("Sq_3_1")]
        public string Sq_3_1 { get; set; }

        [XmlElement("Sq_4_1")]
        public string Sq_4_1 { get; set; }

        [XmlElement("Sq_1_2")]
        public string Sq_1_2 { get; set; }

        [XmlElement("Sq_2_2")]
        public string Sq_2_2 { get; set; }

        [XmlElement("Sq_3_2")]
        public string Sq_3_2 { get; set; }

        [XmlElement("Sq_4_2")]
        public string Sq_4_2 { get; set; }

        [XmlElement("Sq_1_3")]
        public string Sq_1_3 { get; set; }

        [XmlElement("Sq_2_3")]
        public string Sq_2_3 { get; set; }

        [XmlElement("Sq_3_3")]
        public string Sq_3_3 { get; set; }

        [XmlElement("Sq_4_3")]
        public string Sq_4_3 { get; set; }

        [XmlElement("Sq_1_4")]
        public string Sq_1_4 { get; set; }

        [XmlElement("Sq_2_4")]
        public string Sq_2_4 { get; set; }

        [XmlElement("Sq_3_4")]
        public string Sq_3_4 { get; set; }

        [XmlElement("Sq_4_4")]
        public string Sq_4_4 { get; set; }

        public override List<string> GetNodeAddress()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval,sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval sample groupname 是最后三个属性,获得的节点值为 ns6：。。。。
                n.Add(properties[i].GetValue(this).ToString());
            }
            return n;
        }

        public override List<string> GetNodeDisplayName()
        {
            PropertyInfo[] properties = GetType().GetProperties();
            if (properties.Length < 4)
                throw new NotImplementedException("Porperties count error!");
            //(总属性数量-interval-group),interval，sample, groupname 是最后三个属性
            int count = properties.Length - 3;
            List<string> n = new List<string>();
            for (int i = 0; i < properties.Length - 3; i++)
            {
                //interval，sample, groupname 是最后三个属性,节点名称为 "CoilLoadRequestNode" ...
                n.Add(properties[i].Name);
            }
            return n;
        }
    }



    #endregion

    #endregion
}
